Facebook Oauth Logout

Ich habe eine Anwendung, die über Oauth 2 in Facebook integriert werden kann.

Ich kann mit FB autorisieren und deren REST- und Graph-APIs perfekt abfragen, aber wenn ich autorisiere, wird eine aktive Browsersitzung mit FB erstellt. Ich kann mich dann problemlos von meiner Anwendung abmelden, aber die Sitzung mit dem FB bleibt bestehen. Wenn also jemand anderes den Browser verwendet, wird das FB-Konto des vorherigen Benutzers angezeigt (es sei denn, der vorherige Benutzer meldet sich auch manuell vom FB ab).

Die Schritte, die ich zur Autorisierung unternehme, sind:

Call [LINK: graph.facebook.com/oauth/authorize?client_id...

Dieser Schritt öffnet ein Facebook-Anmelde- / Verbindungsfenster, wenn im Browser des Benutzers noch keine FB-Sitzung aktiv ist. Sobald sie sich bei Facebook angemeldet haben, leiten sie mit einem Code, den ich gegen ein oauth-Token eintauschen kann, auf meine Website weiter.

Call [LINK: graph.facebook.com/oauth/access_token?client_id ..] mit dem Code von (1)

Nun habe ich ein Oauth-Token und der Browser des Benutzers ist auf meiner Site und in FB angemeldet.

Ich rufe eine Reihe von APIs auf, um Dinge zu erledigen: d. H. [LINK: graph.facebook.com/me?access_token=..

Nehmen wir an, mein Benutzer möchte sich von meiner Website abmelden. Die FB-Nutzungsbedingungen verlangen, dass ich eine einmalige Abmeldung durchführe. Wenn sich der Benutzer von meiner Website abmeldet, wird er auch von Facebook abgemeldet. Es gibt Argumente, dass dies ein bisschen blöd ist, aber ich stimme gerne zu, wenn es eine Möglichkeit gibt, dies tatsächlich zu erreichen.

Ich habe Vorschläge gesehen, die:

EIN. Ich benutze die Javascript-API, um mich abzumelden: FB.Connect.logout (). Nun, ich habe es versucht, aber es hat nicht funktioniert, und ich bin mir nicht sicher, wie es genau funktionieren könnte, da ich die Javascript-API in keiner Weise auf meiner Website verwende. Die Sitzung wird nicht von der Javascript-API verwaltet oder erstellt, daher bin ich mir nicht sicher, wie sie ablaufen soll.

B. Verwenden Sie [LINK: facebook.com/logout.php]. Dies wurde vor einiger Zeit von einem Administrator in den Facebook-Foren vorgeschlagen. Das Beispiel bezieht sich auf die alte Art, FB-Sessions zu erhalten (non-oauth), sodass ich glaube, dass ich es in meinem Fall nicht anwenden kann.

C. Verwenden Sie die alte REST-API expireSession oder revokeAuthorization. Ich habe beide ausprobiert und während das Oauth-Token abgelaufen ist, wird die Sitzung, die der Browser derzeit verwendet, nicht ungültig, sodass sie keine Auswirkungen hat und der Benutzer nicht bei Facebook abgemeldet ist.

Ich bin wirklich ein bisschen am Ende, die Facebook-Dokumentation ist lückenhaft, mehrdeutig und ziemlich arm. Der Support in den Foren ist nicht vorhanden, im Moment kann ich mich nicht einmal im Facebook-Forum einloggen, und außerdem funktioniert die eigene FB Connect-Integration nicht einmal im Forum. Inspiriert nicht viel Selbstvertrauen.

Ta für jede mögliche Hilfe, die Sie anbieten können. Derek

ps. Musste HTTPS auf LINK ändern, nicht genug Karma, um Links zu posten, was wahrscheinlich fair genug ist.

Antworten auf die Frage(26)

Ihre Antwort auf die Frage