TL; DR Das Javascript-SDK von Facebook kann den genauen Anmeldestatus eines Benutzers, der sich direkt von facebook.com abgemeldet hat, nicht ermitteln.
Ich entwickle eine Facebook App mit dem Javascript SDK zur Authentifizierung. Mir ist aufgefallen, dass das SDK, wenn sich der Benutzer direkt von Facebook abmeldet (auf facebook.com), keinen Sinn für den Anmeldestatus des Benutzers auf der App-Seite hat. Ich habe den folgenden einfachen Testfall durchgekocht.
Melden Sie sich auf einem Tab bei facebook.com an. Rendern Sie auf einer anderen Registerkarte die App-Seite (ersetzen Sie MY_APP_ID entsprechend). Wenn Sie bei Facebook als Benutzer angemeldet sind, der niemals Berechtigungen für diese App erteilt hat, klicken Sie auf "Anmelden" und erteilen Sie sie. In jedem Fall sollten einige Ereignisse ausgelöst werden, die anzeigen, dass Sie angemeldet sind.
Melden Sie sich jetzt auf facebook.com aus Facebook ab. Gehen Sie zur App-Registerkarte und klicken Sie auf alle Schaltflächen (außer "Login") und sehen Sie sich die Browser-Konsolenausgabe an.
Wenn FB.logout
aufgerufen wird, passiert nichts. Der Rückruf wird nie aufgerufen. In Chrome wird der folgende Fehler angezeigt: "Unsicheres JavaScript versucht, auf den Frame mit URL Ссылка aus dem Frame mit der URL Ссылка . Domänen, Protokolle und Ports müssen übereinstimmen."
Wenn FB.getLoginStatus
aufgerufen wird, lautet die Antwort "connected" und ein authResponse-Objekt. Dies ist jedoch nicht hilfreich, weil es jetzt falsch ist. Wenn stattdessen true für den Parameter "force" übergeben wird, passiert nichts (der Callback wird nie aufgerufen).
Wenn FB.getAuthResponse
aufgerufen wird, passiert nichts (der Callback wird nie aufgerufen).
Keines der relevanten Ereignisse wird während eines dieser Ereignisse ausgelöst (nach dem Abmelden von Facebook).
Das Problem besteht dann darin, dass es in einem solchen Fall keine Möglichkeit gibt, den Anmeldestatus des Benutzers legitim vom SDK zu bestimmen. Oder ich mache etwas Dummes, obwohl ich es auf das Nötigste reduziert habe.
Mein Endziel hier ist, dass ich etwas in diesem Fall tun kann, wenn der Benutzer nach dem Abmelden von Facebook auf meine Abmeldetaste klickt. Aber das SDK bietet keine brauchbaren Mittel, um dies zu erreichen.
Irgendwelche Ideen oder Gedanken? Hat jemand anderes dies erfahren und einen Workaround gefunden? Danke!
Einfache App-Seite:
%Vor% Ich denke nicht, dass diese Lösung Ihnen jetzt helfen wird, aber ich poste es, damit andere es nicht so schwer haben.
Dies liegt daran, dass Sie die Methode FB.getLoginStatus
nicht ordnungsgemäß implementieren.
Alles, was Sie tun müssen, ist diese Methode zu implementieren
nach dem Init-Aufruf. Diese Methode ruft statusChangeCallback
method auf und führt die Authentifizierung durch.
für mehr Referenz können Sie diese Seite der offiziellen Dokumentation verweisen Ссылка
Vor allem: warum wollen Sie das genau?
Die Facebook-Anmeldung ist im Grunde genommen nur eine Annehmlichkeit für Facebook-Nutzer, um zu vermeiden, dass sich ein Anmelde- oder Anmeldeformular auf Ihrer Webseite ausfüllt. Es ermöglicht eine einfache Einrichtung einer Benutzersitzung auf Ihrer eigenen Website, aber soweit ich weiß, gibt es Ihnen kein Recht, einen Benutzer direkt aus seiner Sitzung bei Facebook (oder anderen Facebook-Login-fähigen Websites wie Stackoverflow) zu protokollieren ). Das funktioniert auch umgekehrt: Wenn sich ein Benutzer von Facebook abmeldet, heißt das nicht, dass er alle anderen Sessions verlieren sollte, die durch einen Facebook-Login eingerichtet wurden.
Tags und Links javascript facebook facebook-javascript-sdk