Ich spiele mit der Oauth 2.0-Autorisierung in Facebook herum und habe mich gefragt, ob die Zugriffstoken, die Facebook ohnmächtig macht, jemals ablaufen. Wenn ja, gibt es eine Möglichkeit, ein langlebiges Zugriffstoken anzufordern?
124
Antworten:
Nachdem ich ein bisschen herumgegraben hatte, fand ich das. Es scheint die Antwort zu sein:
Aktualisiert (11. April 2018)
Ankündigung der Facebook-Änderung (10/04/2018)
Facebook hat die Token-Ablaufseite aktualisiert (10/04/2018)
offline_access: Ermöglicht Ihrer Anwendung, jederzeit autorisierte Anforderungen im Namen des Benutzers auszuführen. Standardmäßig verfallen die meisten Zugriffstoken nach kurzer Zeit, um sicherzustellen, dass Anwendungen nur dann Anforderungen im Namen des Benutzers stellen, wenn sie die Anwendung aktiv verwenden. Diese Berechtigung macht das von unserem OAuth-Endpunkt zurückgegebene Zugriffstoken langlebig.
Es ist ein angeforderter Berechtigungswert.
http://developers.facebook.com/docs/authentication/permissions
AKTUALISIEREN
Die Berechtigung offline_access wurde vor einiger Zeit entfernt.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
quelle
Versuchen Sie dies möglicherweise, es wird Ihnen voll helfen
Um ein lebenslanges Access Token zu erhalten, müssen Sie es verwenden
scope=offline_access
Bedeutung von
scope=offline_access
ist, dass: -quelle
Beachten Sie, dass Facebook jetzt die Berechtigung offline_access zugunsten von Token ablehnt, für die Sie ein "Upgrade" bis zum Ablauf anfordern können. Ich beschäftige mich gerade selbst damit, daher habe ich nicht viel mehr zu sagen, aber dieses Dokument kann helfen:
https://developers.facebook.com/docs/offline-access-deprecation/
quelle
Ich bin mit der gleichen Frage wie das OP hierher gekommen, aber die Antworten, die die Verwendung von offline_access vorschlagen, werfen für mich rote Fahnen auf.
In Bezug auf die Sicherheit ist der Offline-Zugriff auf das Facebook-Konto eines Benutzers qualitativ anders und weitaus leistungsfähiger als die Verwendung von Facebook für die einmalige Anmeldung und sollte nicht leichtfertig verwendet werden (es sei denn, Sie benötigen es wirklich). Wenn ein Benutzer diese Berechtigung erteilt, kann "die Anwendung" das Konto des Benutzers jederzeit und von jedem Ort aus überprüfen. Ich habe "die Anwendung" in Anführungszeichen gesetzt, weil es sich eigentlich um jedes Tool handelt, das über die Anmeldeinformationen verfügt. Sie können eine ganze Reihe von Tools erstellen, die nichts mit dem Webserver zu tun haben, der auf alle Informationen zugreifen kann, die der Benutzer für diese freigegeben hat Referenzen.
Ich würde diese Funktion nicht verwenden, um eine kurze Token-Lebensdauer zu umgehen. das ist nicht der beabsichtigte Zweck. In der Tat ist die Token-Lebensdauer selbst ein Sicherheitsmerkmal. Ich bin immer noch auf der Suche nach Details zur ordnungsgemäßen Verwendung dieser Token (Kann ich sie beibehalten? Wie kann / soll ich sie sichern? Bindet Facebook das OAuth 2.0-Aktualisierungstoken in das Haupt-Token ein? Wenn nicht, wo ist es und / oder wie aktualisiere ich?), aber ich bin mir ziemlich sicher, dass offline_access nicht der richtige Weg ist.
quelle
Ja, sie verfallen. Es gibt einen 'expires'-Wert, der zusammen mit dem' access_token 'übergeben wird, und soweit ich das beurteilen kann, sind es ungefähr 2 Stunden. Ich habe gesucht, sehe aber keine Möglichkeit, eine längere Ablaufzeit anzufordern.
quelle
da ich das gleiche Problem hatte - siehe den ausgezeichneten Beitrag zu diesem Thema von Ben Biddington, der all diese Probleme mit dem falschen Token und dem richtigen Typ für die Anfragen geklärt hat.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
quelle
Sie können das Zugriffstoken des Benutzers jedes Mal aktualisieren, wenn sich der Benutzer über Facebook bei Ihrer Website anmeldet. Der Offline-Zugriff kann nicht garantieren, dass Sie ein lebenslanges Zugriffstoken erhalten. Das Zugriffstoken ändert sich, wenn der Benutzer Ihnen den Anwendungszugriff widerruft oder der Benutzer sein Kennwort ändert.
Zitiert von Facebook http://developers.facebook.com/docs/authentication/
Angenommen, Sie speichern die Facebook-UID und das Zugriffstoken des Benutzers in einer Benutzertabelle in Ihrer Datenbank. Jedes Mal, wenn der Benutzer auf die Schaltfläche "Mit Facebook anmelden" klickt, überprüfen Sie den Anmeldestatus mithilfe der Facebook-Javascript-API und überprüfen dann den Verbindungsstatus anhand der Antwort Wenn der Benutzer eine Verbindung zu Ihrer Site hergestellt hat, können Sie das Zugriffstoken in der Tabelle aktualisieren.
quelle
Klicken Sie hier, um ein kurzlebiges Zugriffstoken gegen ein langlebiges / nicht ablaufendes (Seiten) zu tauschen:
quelle
Melden Sie sich bei Facebook an und bearbeiten Sie Ihre Anwendungseinstellungen (Konto -> Anwendungseinstellung -> zusätzliche Berechtigung der Anwendung, die Ihr Konto verwendet). Deaktivieren Sie die Berechtigung (Zugriff auf meine Daten, wenn ich die Anwendung nicht verwende (offline_access)). Wenn Sie sich bei der Anwendung anmelden, gibt face ein neues Token aus.
quelle
Grundsätzlich läuft das Facebook-Token ungefähr in einer Stunde ab. Sie können jedoch das 'Exchange'-Token verwenden, um ein langlebiges Token zu erhalten: https://developers.facebook.com/docs/facebook-login/access-tokens
quelle
Überprüfen Sie die folgenden Dinge, wenn Sie mit Facebook Graph API interagieren.
1) Die Anwendungsverbindungs-URL sollte die Basis Ihrer "redirect_uri" -Verbindungs-URL sein: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Ihre "redirect_uri" "sollte in beiden Fällen gleich sein (wenn Sie einen Bestätigungscode anfordern und ein access_token anfordern) redirect_uri - www.x-minds.org/fb/connect/redirect 3) Sie sollten das Argument codieren, wenn Sie einen anfordern access_token 4) sollte das Argument (type = client_cred) nicht übergeben, wenn Sie ein access_token anfordern. Der Autorisierungsserver stellt ein Token ohne Sitzungsteil aus. Wir können dieses Token nicht mit dem Alias "Ich" in der Grafik-API verwenden. Dieses Token hat eine Länge von (40), aber ein Token mit Sitzungsteil hat eine Länge von (81). Ein Zugriffstoken ohne Sitzungsteil funktioniert in einigen Fällen
Beispiel: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Die Graph-API mit dem Alias "me" funktioniert jedoch nur mit Token mit Sitzungsteil.
quelle
Ich weiß nicht, wann genau die Token ablaufen, aber sie tun es, sonst gäbe es keine Option, Offline-Berechtigungen zu erteilen.
Manchmal ist es jedoch ein Overkill, wenn der Benutzer Offline-Berechtigungen erteilen muss. Abhängig von Ihren Anforderungen reicht es möglicherweise aus, dass das Token gültig bleibt, solange die Website im Browser des Benutzers geöffnet wird. Hierfür gibt es möglicherweise eine einfachere Lösung: Melden Sie den Benutzer regelmäßig mit einem iframe neu an: Facebook meldet sich automatisch erneut von Cookie PHP an
Arbeitete für mich ...
quelle
Dies ist ein paar Jahre später, aber der Facebook Graph API Explorer verfügt jetzt über ein kleines Infosymbol neben dem Zugriffstoken, mit dem Sie auf die Zugriffstoken-Tool-App zugreifen und das API-Token um einige Monate verlängern können. Könnte während der Entwicklung hilfreich sein.
quelle