Wie bekomme ich die neue Facebook Javascript SDK arbeiten in IE8?
Habe ich eingekocht meiner Seite, um die einfachste Sache, und es immer noch nicht funktioniert im IE8.
Hier ist die gesamte html-Seite:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
<head></head>
<body>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: 'd663755ef4dd07c246e047ea97b44d6a', status: true, cookie: true, xfbml: true});
FB.Event.subscribe('auth.sessionChange', function(response) {
alert(JSON.stringify(response));
});
FB.getLoginStatus(function (response) { alert(JSON.stringify(response)); });
</script>
</body>
</html>
In firefox, safari und chrome (auf einem mac), bekomme ich das Verhalten, das ich erwarten, dass: - wenn ich nicht eingeloggt Facebook, bekomme ich einen dialog, auf Seite Last mit einer leeren Sitzung. Wenn ich auf die Schaltfläche "Login" und melden Sie sich, ich wird ein zweites Dialogfeld mit einer Sitzung. Wenn ich eingeloggt bin in Facebook, ich bekomme zwei Dialoge mit sessions: eine aus der getLoginStatus nennen, und ein anderes von der Veranstaltung.
Im IE8 bekomme ich keine Dialoge, wenn ich das laden der Seite. Die getLoginStatus callback wird nicht aufgerufen. Wenn ich den Anmelde-button klicke, bekomme ich einen dialog, aber es hat einen sehr seltsamen Fehler:
Ungültiges Argument
Den Facebook Connect cross-domain
receiver URL
(http://static.ak.fbcdn.net/connect/xd_proxy.php#?=&cb=f3e91da434653f2&origin=http%3A%2F%2Fmysiteurl.com%2Ff210cba91f2a6d4&relation=opener&transport=flash&frame=f27aa957225164&result=xxRESULTTOKENxx)
muss die Anwendung Schließen
URL (http://mysiteurl.com/) als
Präfix. Sie können konfigurieren Sie die Verbindung
URL in die Einstellungen der Anwendung
Editor.
Habe ich bereinigt die Connect-URL oben, aber es ist richtig.
Des dialogs haben die Benutzername/Kennwort-Felder. Wenn ich mich einlogge, wird das Dialogfeld wird umgeleitet auf meine Connect-URL, aber es gibt keine fb-cookie, so dass natürlich nichts funktioniert.
Was mache ich hier falsch?
Update (2010-Sep-10):
Dieses problem ist nicht universal. Meine Website-url muss die port-Nummer in es,
da es meine test-site: http://mysiteurl.com:12345. Ohne port
Anzahl, ie8 scheint ok zu sein. Mit der port-Nummer, geht es weiter
scheitern als vorher. Aber die Fehlermeldung ist jetzt verständlicher:
Ungültiges Argument
Angegebenen URL ist nicht erlaubt durch die Anwendung Konfiguration
Auch, dieses problem ist spezifisch für IE (eigentlich vermute ich, dass es speziell auf die flash-XD-transport, aber ich weiß nicht, wie um zu bestätigen, dass). Es funktioniert gut auf jeder anderen Plattform/browser-paar, die ich ausprobiert habe.
Ich bin immer noch nicht näher zu dieser Arbeit eine url mit einer Portnummer.
- Wenn Sie schnuppern den Verkehr, die gehen, sehen Sie irgendwelche Unterschiede? Und zu welchem Zeitpunkt Sie erscheinen?
- Gute Frage. Die Unterschiede sind ziemlich groß. Facebook auf IE offenbar nutzt flash, um einen Kommunikations-Kanal, das ist nicht wahr, für den anderen Browsern habe ich genau betrachtet. Etwas in der flash-Mechanismus ist offenbar nicht richtig funktioniert.
- Wenn Sie mit Ihren Verdächtigungen zeigen Sie auf die Tatsache, dass Sie versuchen, verwenden Sie einen anderen port als 80, warum nicht versuchen, es auf port 80? Verwenden Sie eine sub-Domain wie test.yoursite.com gebunden an port 80
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen vorbei channelUrl param Ihrem FB.init-Funktion und erstellen channel.html Datei wie vorgeschlagen, durch ref-link:
https://developers.facebook.com/docs/reference/javascript/
Sie WIRKLICH sollte dies veröffentlichen. Aber wenn Sie auf dem lokalen server, auf einem zufälligen port.e.g 8080 verwenden Sie 127.0.0.1 und NICHT localhost oder sonst funktioniert es nicht im IE.
Auch sicherstellen, dass Ihre connect-URL in der facebook-Anwendung Einstellungen auf 127.0.0.1
Ich habe das hantieren mit meinem code für Stunden versuchen, um dies herauszufinden. Meine situation ist ein bisschen anders, aber ich fühle es sein kann von dem gleichen problem:
Jederzeit würde ich ausführen von Befehlen, die unter der FB.Event.Abonnieren-Funktion, IE8 ausgeführt würde meine gesamte Befehl vor das trigger-Ereignis hatte sich tatsächlich verändert (z.B., wenn abonniert 'auth.login', die cb-Funktion ausgeführt wird, bevor ein Benutzer eingegeben sein/Ihr Benutzername und Passwort). Natürlich, meine callback-Funktionen angewiesen auf Daten, die notwendig sind nach der Benutzer angemeldet hatte.
Ich testen, im IE, Firefox und Chrome, und IE ist der einzige browser, gebe mir Mühe. Auch ich habe meine test-site unter einer anderen port als 80, aber ich habe nicht versucht, spezifische Diagnosen noch zu lokalisieren das problem, obwohl ich bin mir ziemlich sicher, dass es bezieht sich auf diese.
Ich hoffe, dies hilft jemand mit ähnlichen Problemen zumindest bewusst sein, andere mögliche Probleme. Hoffe eine Antwort zu finden, oder einen workaround bald!
Wenn Ihr problem passiert nur beim laufen Ihre Website auf einem anderen port als port 80, dann haben Sie Ihre Antwort: nur ausführen, dass es auf port 80. Varianten auf diese Frage/problem kommen, über und über mit Facebook-app-Entwicklung, wo die Menschen führen Ihren test oder dev-site auf einem anderen port als port 80. Mann oben und führen Sie es auf port 80!
Ist es nicht so, wenn Sie gehen, um auf einem anderen port läuft in der Produktion, so stellen Sie Ihre Testumgebung mit Hilfe des mimic-Produktion.
Haben Sie berechtigten Grund haben Sie zu laufen auf eine Alternative port-Nummer? Wirklich, es ist nicht schwer, überhaupt zu laufen, so viele Seiten wie Sie möchten, alle auf port 80.
Ich hatte das gleiche problem hier mit IE. Funktioniert einwandfrei in Firefox und Chrome. Aber dann habe ich gerade herausgefunden.
In Ihrem Facebook-Anwendung Einstellung in der Registerkarte Website, ich bin sicher, Sie haben "Website-URL" ausgefüllt, aber jetzt müssen Sie füllen Sie das Feld "Website-Domain" unter es und dann funktioniert es für den IE.
Ich weiß nicht, WARUM, ohne, dass Feld es funktioniert immer noch für andere Browser als IE, es macht keinen Sinn, auf Facebook ist zu Ende.