Abmelden / Benutzer auf Facebook wechseln, nachdem die Offline-Zugriffsberechtigung abgelehnt wurde

Mit FacebookOffline-Zugriffsberechtigungen werden verworfen Am 1. Mai können Webanwendungen die Dauer des OAuth-Zugriffstokens problemlos um 60 Tage verlängern.

Aber wenn die Anwendung im Web ist und eine zur Verfügung stellen will"Benutzer wechseln" Option, am häufigsten aausloggen -> einloggen, dann wird das Zugriffstoken ungültig und es gibt keinen Ersatz mehr für offline_access.

Frage: Gibt es eine Möglichkeit, gültige Zugriffstoken (für 60 Tage) beizubehalten, aber dennoch die Abmeldung zuzulassen, oder mehrere Benutzer sich in einem einzelnen Browser anzumelden, oder eine Möglichkeit, die Anmeldeaufforderung zu erzwingen, wenn die Anmeldung angefordert wird (damit Facebook den Benutzerwechsel auf der Anmeldeseite anbietet)? )?

Oder werden wir ermutigt, keine Abmeldemöglichkeit mehr anzubieten?

 Nitzan Tomer09. Apr. 2012, 18:07
Ich frage Sie Folgendes: Was tun Sie, wenn der Benutzer innerhalb von 60 Tagen keine Verbindung zu Ihrer App hergestellt hat und das Token abläuft? Ich bin der Meinung, dass Sie dazu ermutigt werden, Token zu verwenden, die Sie durch Benutzerinteraktion erhalten.
 Nicolas Grasset09. Apr. 2012, 18:11
Sicher, wir gehen nur davon aus, dass der Benutzer nicht mehr aktiv ist, wenn das Token abläuft. Aber in dem von mir hervorgehobenen Szenario könnte ein Benutzerwechsel das Token nach nur wenigen Minuten verfallen lassen, während sich der Benutzer nur über seinen Browser von der Sitzung abmelden wollte.

Antworten auf die Frage(2)

als ob ich beim Aufrufen unabhängig davon, wie ich das Zugriffstoken, den serverseitigen Flow oder den clientseitigen Flow erhalte, zwei Token (aus beiden Flows) habeFB.logout () (Ich gehe davon aus, dass Sie den Benutzer auf diese Weise abmelden) Alle Token werden ungültig.

Es scheint mir, dass Sie auswählen müssen, welche Funktionalität Sie bevorzugen, den Benutzer wechseln oder ein langlebiges gültiges Token verwenden möchten, es sei denn, mir fehlt etwas.

Ich kann Ihnen jedoch eine Umgehungsmöglichkeit anbieten, die nicht ideal ist, wie die meisten Umgehungsmöglichkeiten, aber Sie können möglicherweise beide Welten genießen: Geben Sie dem Benutzer in Ihrer Benutzeroberfläche die Möglichkeit, sich abzumelden, um den Benutzer zu wechseln, und teilen Sie ihm dies mit Melden Sie sich manuell bei Facebook ab. Wenn er dann auf Ihre Abmeldung klickt, melden Sie ihn einfach ohne Verwendung von von Ihrem System abFB.logout. Auf diese Weise werden die Zugriffstoken, die Sie für diesen Benutzer haben, nicht ungültig und ein anderer Benutzer kann sich anmelden.

 Nicolas Grasset10. Apr. 2012, 00:04
Danke für die Antwort. So habe ich geplant, es zu "lösen", wenn es keine bessere Lösung gibt ... Ich denke, jemand bei Facebook sollte das aufgreifen
 Nicolas Grasset10. Apr. 2012, 12:30
Nochmals vielen Dank für die Antwort. Wahrscheinlich das Beste, was ich jemals bekommen werde. Aber Facebook hat Push-APIs usw., daher wurde es offensichtlich für einen Bereich entwickelt, der etwas über die Interaktion der Live-Benutzer hinausgeht. Hoffentlich keine neue Strategieänderung, hoffe ich!
 stereoscott25. Jan. 2013, 10:04
Das hat mich auch geplagt. Wir verwenden langlebige Zugriffstoken (60 Tage) von Facebook, um die Grafik-API offline zu verwenden (auf Anforderung des Benutzers), und wir verlassen uns auf die Facebook-Anmeldung für die Authentifizierung auf unserer Website. Ich möchte einen Abmeldelink anbieten, aber da dies unsere Token ungültig macht, gibt es wirklich keine anständige Lösung. Gegenwärtig zerstört unser Abmeldelink unsere serverseitige Sitzung, aber das macht nicht viel, da wir einen Benutzer automatisch wieder mit dem Javascript SDK anmelden, wenn er mit einer gültigen Facebook-Sitzung auf unsere Website zurückkehrt.
 Nitzan Tomer10. Apr. 2012, 02:32
Viel Glück damit, ich werde dieser Frage folgen, falls es eine bessere Lösung gibt, die ich verpasst habe, aber ich glaube, Facebook möchte einfach nicht, dass Sie ihr Diagramm abfragen, wenn es nicht im Kontext einer Benutzerinteraktion mit Ihrer App ist.

dass dies aus Sicherheitsgründen nicht funktioniert. Haben Sie jedoch versucht, die Abmelde-URL ohne Angabe eines Zugriffstokens zu erstellen? Das heißt zum Beispiel:

Wenn Sie das PHP SDK verwenden, schreiben Sie entweder Ihre eigene Version desgetLogoutUrl(...) Methode oder übergeben Sie einfach ein leeres access_token wie$facebook->getLogoutUrl(array('access_token' => ''));

Wenn Sie das JS SDK verwenden, können Sie es nicht verwendenFB.logout(), für die ein Zugriffstoken erforderlich ist. Stattdessen können Sie Ihre eigenen bereitstellen:

<code>FB.provide('UIServer.Methods', {
    'auth.logout': {
        url: 'logout.php',
        transform: function(a) {
            var xdRelation = FB.UIServer.getXdRelation(a.params);
            a.params.next = FB.UIServer._xdResult(a.cb, a.id, xdRelation, true);
            return a;
        }
    }
});
</code>

Wenn Sie den obigen Code ausführen, sollte er theoretisch das Verhalten von FB.logout so ändern, dass kein access_token mehr übergeben wird. Faire Warnung: Ich habe es nicht selbst getestet. Ansonsten senden Sie den Benutzer einfach anhttp://facebook.com/logout.php?next=SOME_URL und sehen, ob das ohne access_token funktioniert.

 Nicolas Grasset14. Apr. 2012, 21:48
Vielen Dank.http://facebook.com/logout.php?next=SOME_URLfunktioniert nicht.

Ihre Antwort auf die Frage