Ich habe eine Anwendung, die mit Oauth 2 in Facebook integriert wird.
Ich kann mit FB autorisieren und ihre REST- und Graph-APIs perfekt abfragen, aber wenn ich autorisiere, wird mit FB eine aktive Browsersitzung erstellt. Ich kann mich dann problemlos von meiner Anwendung abmelden, aber die Sitzung mit 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 ebenfalls manuell vom FB ab).
Die Schritte, die ich zur Autorisierung unternehme, sind:
- Rufen Sie [LINK: graph.facebook.com/oauth/authorize?client_id ...] auf.
Dieser Schritt öffnet ein Facebook-Anmelde- / Verbindungsfenster, wenn der Browser des Benutzers noch keine aktive FB-Sitzung hat. Sobald sie sich bei Facebook angemeldet haben, leiten sie mit einem Code, den ich gegen ein Oauth-Token eintauschen kann, auf meine Website weiter.
- Rufen Sie [LINK: graph.facebook.com/oauth/access_token?client_id ..] mit dem Code von (1) auf.
Jetzt 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: dh [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 Single Sign Off durchführe. Wenn sich der Benutzer von meiner Website abmeldet, werden sie auch von Facebook abgemeldet. Es gibt Argumente, dass dies ein bisschen dumm ist, aber ich bin gerne bereit, dem nachzukommen, wenn es eine Möglichkeit gibt, dies tatsächlich zu erreichen.
Ich habe Vorschläge gesehen, die:
A. Ich verwende die Javascript-API zum Abmelden: FB.Connect.logout (). Nun, ich habe versucht, das zu verwenden, aber es hat nicht funktioniert, und ich bin mir nicht sicher, wie es genau sein könnte, da ich die Javascript-API auf meiner Website in keiner Weise 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 bezog sich auf die alte Art, FB-Sitzungen zu erhalten (nicht oauth), daher glaube ich nicht, dass ich es in meinem Fall anwenden kann.
C. Verwenden Sie die alte REST-API expireSession oder revokeAuthorization. Ich habe beide ausprobiert und während sie das Oauth-Token ablaufen lassen, machen sie die Sitzung, die der Browser derzeit verwendet, nicht ungültig, sodass sie keine Auswirkungen hat. Der Benutzer ist nicht von Facebook abgemeldet.
Ich bin wirklich ein bisschen am Ende, die Facebook-Dokumentation ist lückenhaft, mehrdeutig und ziemlich schlecht. Die Unterstützung in den Foren ist nicht vorhanden, im Moment kann ich mich nicht einmal im Facebook-Forum anmelden, und abgesehen davon funktioniert die eigene FB Connect-Integration nicht einmal im Forum selbst. Inspiriert nicht viel Vertrauen.
Ta für jede Hilfe, die Sie anbieten können. Derek
ps. Musste HTTPS in LINK ändern, nicht genug Karma, um Links zu posten, was wahrscheinlich fair genug ist.