Meine Website verwendet lebenslange Zugriffstoken ( offline_access
). Wenn der Benutzer jedoch sein Kennwort ändert, wird das Zugriffstoken zurückgesetzt. Gibt es eine Methode, um zu überprüfen, ob das aktuelle Zugriffstoken gültig ist, bevor die Graph-API aufgerufen wird? Vielen Dank für Ihre Zeit.
72
Antworten:
Grundsätzlich möchte FB, dass Sie danach abfragen oder den Fall erkennen und den Benutzer umleiten, damit eine Reauth auftritt. Ärgerlich, aber offiziell:
(Alter, veralteter Link. Siehe unten) https://developers.facebook.com/blog/post/500/
Bearbeiten: Facebook hat seine Linkstruktur ohne Weiterleitungen geändert. Nicht überrascht.
https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/
quelle
Offline, ohne etwas an Facebook zu senden - das glaube ich nicht. Der einfachste Weg ist wahrscheinlich, eine Anfrage an folgende Adresse zu senden:
Facebook unterstützt auch Abonnements für Echtzeit- Updates, aber ich bin nicht sicher, wie ich sie auf diese Situation anwenden soll.
quelle
Wenn Sie die Ablaufzeit des Tokens wissen möchten, können Sie eine offene Diagramm-URL mit appid und token übergeben, wie unten beschrieben.
quelle
client_id
Parameter hier macht nichts. Sie können es weglassen.Sie können das Token mithilfe des Token-Debug-Dienstes überprüfen. Schauen Sie hier
https://graph.facebook.com/debug_token?input_token=INPUT_TOKEN&access_token=ACCESS_TOKEN
https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/
quelle
Die Echtzeit-Updates würden es Ihnen ermöglichen, dieses Problem zu lösen, aber es wäre ziemlich kompliziert. Grundsätzlich können Sie Updates abonnieren, die Ihnen mitteilen, 1) ob der Benutzer die App entfernt hat oder 2) ob der Benutzer Berechtigungen entfernt hat. Sie können dies verwenden, um die aktuellen Berechtigungen des Faceboook-Benutzers zu speichern. Wenn der Benutzer Ihre App entfernt hat, wissen Sie auf diese Weise, dass das Zugriffstoken abgelaufen ist.
Echtzeit-Updates werden von Facebook empfohlen, um mit Berechtigungen umzugehen. Viele Apps rufen jedes Mal eine API auf, wenn eine Seite geladen wird, um nach Berechtigungen zu suchen. Dies ist in der Regel langsam und unzuverlässig.
quelle
Ich habe diese Beiträge durchgesehen, aber ich habe sehr gute Lösungen wie diese gefunden:
Die Antwort auf diese Anfrage bietet Ihnen alles, was Sie brauchen:
Beachten Sie einfach, dass "|" Zeichen muss dort als Brief sein
quelle
quelle
Offline - das ist nicht möglich
Fragen Sie, ob der Benutzer die Erlaubnis gegeben hat oder nicht:
Wenn das Zugriffstoken ungültig ist, wird ein Fehler ausgegeben:
Andernfalls wird eine Liste der Berechtigungen angezeigt, die der Benutzer erteilt hat:
quelle
Aktualisieren Sie dies, da sich die Dinge seit OP geändert haben:
Sie können Zugriffstoken hier debuggen: https://developers.facebook.com/tools/debug/accesstoken?version=v2.5&q= {access_token}
quelle
Ottos Antwort auf den Facebook-Beitrag scheint die offizielle Antwort auf diese Frage zu sein, verwendet jedoch direktes PHP anstelle des SDK und JS, um das Problem anstelle von PHP zu lösen. Wenn Sie PHP verwenden, um nach einer gültigen Sitzung zu suchen, benötigen Sie häufig eine PHP-Methode, um eine gültige Sitzung sicherzustellen, um fortzufahren.
Der folgende Code überprüft das me-Objekt mit der Diagramm-API. Wenn eine Ausnahme ausgelöst wird, wird * die aktuelle Facebook-Sitzung zerstört.
Dies erzwingt spätere Diagrammaufrufe, um eine neue Facebook-Sitzung zu instanziieren. Dadurch erhalten Sie zumindest Zugriff auf öffentliche Daten, sodass Sie Seiten rendern können, für die keine FB-Benutzerberechtigungen erforderlich sind:
Um wieder Zugriff auf die Benutzerberechtigung zu erhalten, muss sich der Benutzer bei Ihrer App anmelden (dies unterscheidet sich von der Anmeldung bei Facebook selbst). Sie können dies mit JS oder mit PHP tun:
* Beachten Sie, dass der Aufruf von destroySession () noch nicht in einer getaggten Version des PHP SDK enthalten ist. Verwenden Sie den Hauptzweig oder patchen Sie ihn ein.
quelle