2016-12-23 4 views
0

Ich arbeite mit Facebook js SDK "Go Live Dialog" für Live-Streaming, alles funktioniert gut bis zum letzten Schritt, wenn ich den Stream veröffentlichen möchte und ich kann nicht veröffentlichen, weil es ein CORS-Fehler:Facebook JS SDK CORS Probleme

XMLHttpRequest kann https://graph2.facebook.com/v2.5/10154376393778843?access_token=EAAOAPyi8mX....&suppress_http_code=1 nicht geladen werden. Die Antwort auf die Preflight-Anforderung besteht keine Prüfung der Zugriffssteuerung: Der Header 'Access-Control-Allow-Origin' enthält mehrere Werte '*, https://www.facebook.com/', aber nur eine ist zulässig. Origin 'https://www.facebook.com/' ist daher nicht erlaubt.

das Problem ist aufgrund graph2.facebook.com sendet CORS zweimal Header:

Access-Control-Allow-Origin: *

Access-Control-Allow-Origin: https://facebook.com/

und Google Chrome akzeptiert nur einen.

Ich habe es als bug on facebook geöffnet, aber bis jetzt ihre Antworten sind "deaktivieren CORS Sicherheit" auf meinem Browser, eine schlechte Lösung, wenn ich meine App für jeden öffentlich machen möchte.

Der Code für die App ist dies:

<script> 
window.fbAsyncInit = function() { 
FB.init({ 
    appId  : '452751035113070', 
    xfbml  : true, 
    version : 'v2.8' 
}); 
}; 

(function(d, s, id){ 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_US/sdk.js"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 
<button id="liveButton">Create Live Stream To Facebook</button> 
<script> 
document.getElementById('liveButton').onclick = function() { 
FB.ui({ 
display: 'popup', 
method: 'live_broadcast', 
phase: 'create', 
}, function(response) { 
if (!response.id) { 
    alert('dialog canceled'); 
    return; 
} 
console.log('stream url:' + response.secure_stream_url); 
FB.ui({ 
    display: 'popup', 
    method: 'live_broadcast', 
    phase: 'publish', 
    broadcast_data: response, 
}, function(response) { 
console.log("video status: \n" + response.status); 
}); 
}); 
}; 
</script> 

hier auch hier: https://plnkr.co/edit/Aq0hkCTh5suXfOl6qKuN?p=preview. Um einen wirklichen Versuch zu machen, sollten Sie ein Streaming mit wowza oder ähnlichem starten, wenn nicht, ist die Schaltfläche zum Veröffentlichen deaktiviert und das Problem tritt auf, wenn ich auf die Schaltfläche zum Veröffentlichen klicke.

wusste jemand, wie man damit umgeht, damit alle Benutzer das Skript verwenden und sie zwingen, andere Browser zu verwenden oder die Sicherheitsoptionen zu deaktivieren? oder muss ich warten bis facebook es repariert?

Antwort

0

I Deaktivieren Sie eine Chrome-Erweiterung und es funktioniert.

Die Erweiterung ist: JetBrains IDE-Unterstützung 2.0.9

das ist seltsam, weil jeder Post reden über Sie nicht 2 CORS-Richtlinien haben kann, und ich denke, der Server sendet 2 Richtlinien hält oder vielleicht der Server senden nur 1 und diese Erweiterungen ändern die Header ... Ich weiß es nicht, aber jetzt funktioniert es.