30 Stimmen

Wie kann ich erzwingen, dass ein Facebook-Zugangs-Token abläuft?

Ich führe einige Tests durch, nachdem offline_access ausgelaufen ist. Ich denke, da alle Interaktionen meiner Anwendung mit Facebook über meine Server erfolgen und durch Benutzeraktivitäten an verschiedenen Anwendungsendpunkten (Telefonanwendungen, Website, Desktopanwendung) initiiert werden, kann ich ein Anwendungszugriffstoken verwenden, um im Namen meiner Benutzer auf der Pinnwand zu veröffentlichen, vorausgesetzt, die Anwendung ist noch autorisiert, auch wenn das Zugriffstoken, das ich während der Autorisierung angefordert habe, abgelaufen ist. Das scheint in der Dokumentation so beschrieben zu sein. aquí impliziert mit

Wenn du dich als App authentifizierst, kannst du ein Zugriffstoken erhalten, das es dir ermöglicht, Anfragen an die Facebook-API im Namen einer App und nicht eines Nutzers zu stellen. [...] App-Zugriffstoken können auch verwendet werden, um Inhalte im Namen eines Nutzers, der deiner Anwendung eine Veröffentlichungserlaubnis erteilt hat, auf Facebook zu veröffentlichen.

App Access Tokens laufen im Allgemeinen nicht ab. Einmal generiert, sind sie unbegrenzt gültig.

Ich muss dies jedoch noch testen. Ich muss also einige Token ablaufen lassen. Ich habe versucht, offizielle Testbenutzer zu verwenden, die Sie auf der Entwicklerseite erstellen und die nur mit der Sandbox Ihrer App und anderen Benutzern darin interagieren können, aber ihre Token scheinen immer für eine Stunde gültig zu sein.

Also habe ich versucht, einen echten Facebook-Benutzer zu verwenden, den ich für diesen Zweck erstellt habe, und das Passwort zu ändern, von dem ich gelesen hatte, dass es das Token ablaufen lässt. Aber das tut es nicht. Das Token wird im Debugger immer noch als gültig angezeigt und ich kann es immer noch für viele Dinge verwenden, einschließlich der Veröffentlichung auf meiner Pinnwand. Ich kann dieses Token sogar weiter verwenden, nachdem ich mich vollständig von der Facebook-Seite abgemeldet habe.

Was ist los? Wie kann ich ein abgelaufenes access_token erhalten, damit ich mein Application Access Token testen kann?

Bearbeiten: Ich glaube, es wird funktionieren. Ich habe mein Anwendungszugriffstoken erstellt und den CLIENT-SIDE-Flow verwendet, um ein Benutzerzugriffstoken zu erhalten, das nur 2 Stunden gültig war, so dass ich eigentlich nur warten konnte, bis es abläuft. Nach Ablauf des Tokens habe ich mit dem Graph-API-Explorer versucht, eine Statusaktualisierung zu posten, was fehlgeschlagen ist, da mir mitgeteilt wurde, dass mein Token abgelaufen ist. Dann habe ich dieselbe Aktion mit meinem Anwendungstoken versucht, was erfolgreich war.

34voto

Nitzan Tomer Punkte 145510

Aber es steht genau dort in der Dokumentation, direkt nach der letzten von Ihnen zitierten Zeile:

App Access Tokens laufen in der Regel nicht ab. Einmal generiert, sind sie auf unbestimmte Zeit gültig. Wenn Sie jedoch eine inva Access Token aus irgendeinem Grund ungültig machen müssen, können Sie Ihr App Secret in den Einstellungen Ihrer App zurücksetzen. Sobald Ihr App-Geheimnis zurückgesetzt wurde, müssen Sie müssen Sie die folgenden Schritte durchführen, um ein neues App-Zugangs-Token zu generieren.

Setzen Sie also zu Testzwecken den geheimen Schlüssel der App zurück.


Editar

Oh, ich habe Sie völlig missverstanden.
Es ist einfacher, ein Benutzer-Token ungültig zu machen, Sie verwenden einfach die me/Zulassungen Verbindung mit einer DELETE-Anfrage.

Dadurch wird die Anwendung für den angemeldeten Benutzer entfernt.
Sie können das mit dem Explorer-Tool versuchen, indem Sie im Auswahlfeld links neben dem Pfadfeld einfach LÖSCHEN wählen.

15voto

Yilmaz Guleryuz Punkte 8490

Dies sollte funktionieren, siehe unten.

Ungültigmachen (auch Abmelden) Ihres Tokens; HTTP-GET-Aufruf an diesen Endpunkt;

https://api.facebook.com/restserver.php?method=auth.expireSession&format=json&access_token=<access_token>

p.s. Meine Antwort ist von 2012... Seitdem hat sich die Facebook-API mit vielen wichtigen Änderungen weiterentwickelt. Es ist zuverlässiger, die aktuelle Facebook-Entwicklerdokumentation zu lesen.

11voto

ton Punkte 3011

Wie @guleryuz Antwort, aber in praktischer Weise:

Mit einem gültigen access_token ${token} :

$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"data":[{"permission":"user_friends","status":"granted"},{"permission":"email","status":"granted"},{"permission":"manage_pages","status":"granted"},{"permission":"business_management","status":"granted"},{"permission":"pages_messaging","status":"granted"},{"permission":"pages_messaging_phone_number","status":"granted"},{"permission":"public_profile","status":"granted"}]}

Widerrufen Sie den Antrag:

$ curl -X DELETE "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"success":true}

Überprüfen Sie den Widerruf:

$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"error":{"message":"Error validating access token: The session was invalidated explicitly using an API call.","type":"OAuthException","code":190,"error_subcode":466,"fbtrace_id":"E2UhrNzyyzZ"}}

5voto

Die hier veröffentlichten Antworten sind veraltet. So erzwingen Sie, dass Ihr Token abläuft: Loggen Sie sich in Ihr Facebook-Konto ein, gehen Sie zu "Einstellungen" und klicken Sie dann auf der linken Seite auf "Apps".

Settings selection

Entfernen Sie die App:

enter image description here

Dadurch wird das Token zum Auslaufen gezwungen.

3voto

Vitalii Punkte 3909

Eine weitere mögliche Lösung ist die Verwendung eines Testkontos mit einer individuellen Ablaufzeit:

enter image description here

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X