webentwicklung-frage-antwort-db.com.de

Facebook-Zugriffstoken ungültig mit der Meldung "Sitzung stimmt nicht mit der gespeicherten Sitzung überein"?

Ich habe vor kurzem diese Fehlermeldung erhalten, als ich auf Facebook einen Newsfeed-Stream Eines App-Benutzers, Gepostet habe. Ich habe eine Offline-Zugriffserlaubnis für die Zugriffstoken, und sie funktionierten kommt für 30-40% der Nutzer.

"Error validating access token: Session does not match current stored session.
This may be because the user changed the password since the time the session
was created or may be due to a system error."
33
DhruvPathak

Es ist möglich, dass Ihr Zugriffstoken aus verschiedenen Gründen ungültig wird (abgelaufene Zeit, Benutzer hat das Kennwort geändert, der Benutzer hat Ihre App deaktiviert, der Benutzer hat sich bei Facebook abgemeldet usw.). Sie sollten dieses Szenario immer berücksichtigen.

Wenn Ihre Benutzer aktiv sind, ist es leicht zu erhalten ein neues Zugriffstoken vom OAuth-Endpunkt aus, ohne dass sie etwas tun müssen. Ist dies nicht der Fall, sollten Sie einen Plan erstellen (z. B. per E-Mail), wie Sie sie zurückgeben, damit Sie ein neues Zugriffstoken erhalten. Das von Ihnen beschriebene Szenario ist nicht unbedingt ungewöhnlich. In den Codebeispielen hier finden Sie Hilfe, wie abgelaufene Zugriffstoken gehandhabt werden.

34
Jeff Bowen

Dies ist undokumentiert, aber ich habe es gerade getestet und funktioniert mit abgelaufenen Zugriffstokens. Sollte mit ungültigen Zugriffs-Tokens arbeiten, wenn Sie deren Benutzer-ID kennen und keine Berechtigungen für Ihre App widerrufen haben. Sie können zunächst überprüfen, ob Sie noch über die erforderlichen Berechtigungen verfügen, indem Sie diese URL aufrufen:

https://graph.facebook.com/userID/permissions?access_token=appID|appSecret

Wenn Sie noch über publish_stream-Berechtigungen verfügen, können Sie ein HTTP POST für diese URL ausgeben:

https://graph.facebook.com/userID/feed mit Postparametern von access_token=appID|appSecret&message=test message

2
bkaid

Lesen Sie den Blog-Post offiziell von Facebook: How-To: Handle abgelaufene Zugriffstoken

2
Syed I.R

Es scheint viele Fragen zu geben, warum Ihr Token so schnell abgelaufen wäre. Ich denke, ich kann etwas Licht ins Dunkel bringen. Hier sind einige Szenarien, die ich gefunden habe:

Da ist der offensichtliche; Der Benutzer hat sein Passwort geändert. Sie können nichts dagegen tun. Sie müssen Ihre App erneut autorisieren. Bei den übrigen Szenarien handelt es sich um Seiten-Token, die einem Token für ein Benutzerprofil ähneln, es sei denn, sie stammen von /me/accounts mit dem Benutzer-Token eines gültigen Administrators für die Seite. Diese scheinen viel häufiger abzulaufen.

Es scheint, dass, wenn ein Administrator einer Seite sein Kennwort ändert (nicht notwendigerweise das von Ihnen verwendete Token), dies dazu führen kann, dass das Token abläuft. Wenn Sie über einige Seiten in Ihrem System mit demselben Administrator verfügen, werden durch Aufruf von /me/accounts häufig ALLE Token für die Seiten aktualisiert, die dieser Benutzer verwaltet. Wenn Sie also eine neue Seite für einen Benutzer mit vorhandenen Seiten verbinden, müssen Sie die vorhandenen Seitentoken mit den neuen von /me/accounts bereitgestellten aktualisieren.

Schließlich gehe ich in meinem System damit um, dass der Administratorbenutzer und das Token als übergeordnetes Element des Seitentokens in meiner Datenbank gespeichert werden. Auf diese Weise kann das System, wenn ich eine Seite erneut verbinden oder eine neue Seite hinzufügen muss, alle zugehörigen Seitentoken suchen und aktualisieren, die von /me/accounts empfangen wurden. Sie können auch versuchen, das Token automatisch zu aktualisieren, indem Sie /me/accounts aufrufen, wenn Sie die abgelaufene Tokenausnahme erhalten.

Hoffe, etwas hilft dabei!

1
thefreeman

Das Offline-Sitzungstoken wird geändert, wenn ein Benutzer sein Kennwort ändert. Wenn eine zuvor funktionierende Sitzung plötzlich gestoppt wird (und Sie erhalten diesen Fehler), wurde das Kennwort des Benutzers geändert (wahrscheinlich vom Benutzer), und Sie müssen ihn erneut auffordern, um Ihnen Offline-Zugriff zu gewähren und das neue Sitzungstoken zu speichern, das Sie erhalten .

1
Femi

Ich habe dieses Problem auch angetroffen, als ich auf die Postkommentare meines Befehlsdienstprogramms zugegriffen habe. In meinem Fall funktionierte alles gut, bis ich plötzlich den Fehler bekam:

Der Remote-Server hat einen Fehler zurückgegeben: (400) Fehlerhafte Anforderung.

Nachdem ich das Problem diagnostiziert hatte, stellte ich fest, dass das Facebook-Zugriffstoken nach einiger Zeit abläuft, obwohl ich es mit der folgenden offline_access-Option erstellt habe:

https://www.facebook.com/dialog/oauth?client_id=[APPID]&redirect_uri=[URL]&scope=user_photos,email,user_birthday,user_online_presence,offline_access

Nachdem ich viel Zeit mit RND verschwendet hatte, stellte ich fest, dass es eine Option in den erweiterten Einstellungen der App für Entfernen der Berechtigung offline_access gibt. Mein Client hatte es aktiviert, und aus diesem Grund lief mein Token ab. Schauen Sie sich das Bild unten an:

Facebook offline access token

0
Optimus