Laufen Facebook Oauth 2.0-Zugriffstoken ab?

124

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?

Jared Brown
quelle
4
So fügen Sie dieser Frage einige Details hinzu: Selbst der Offline-Zugriff wird ungültig, wenn der Benutzer sein Facebook-Passwort ändert. Es ist daher besser, auf Nummer sicher zu gehen und ein neues Zugriffstoken erneut zu erhalten, wenn bei der Verwendung des alten Fehlers Fehler auftreten.
Hoàng Long
2
So fügen Sie die Referenz hinzu: developer.facebook.com/blog/post/500
Hoàng Long
2
yo guys, ihr alle rockt einfach. Was auch immer die Frage ist, ich bekomme es einfach gelöst ... Vielen Dank an alle
vinay
3
Es sieht so aus, als würde Facebook die Offline_Access-Berechtigung am 1. Mai ablehnen. In Zukunft verfallen alle Zugriffstoken, wenn die "Ablaufzeit" (60 Tage) abgelaufen ist, der Benutzer sein Kennwort ändert, der Benutzer Ihre App abautorisiert oder sich abmeldet. API . PS Ich bin mir nicht sicher, warum Facebook die neue "Ablaufzeit" auf 60 Tage festlegt, wenn Zugriffstoken bei Abmeldungen immer noch ablaufen (anscheinend neigen Benutzer dazu, sich innerhalb von 60 Tagen gut abzumelden). Vielleicht fehlt mir etwas ... Ablauf
Steven Wexler
1
Das access_token-Verhalten ändert sich jetzt. Sie sollten die "Breaking Changes" vom Juli 2012 nachschlagen. Die Offline_access-Berechtigung ist veraltet und das access_token hat einen langen Lebenszyklus.
Qodeninja

Antworten:

64

Nachdem ich ein bisschen herumgegraben hatte, fand ich das. Es scheint die Antwort zu sein:

Aktualisiert (11. April 2018)

  • Der Token läuft nach ca. 60 Tagen ab.
  • Das Token wird bis zu 90 Tage lang einmal täglich aktualisiert, wenn die Person, die Ihre App verwendet, eine Anfrage an die Server von Facebook sendet.
  • Alle Zugriffstoken müssen mit Zustimmung der Person, die Ihre App verwendet, alle 90 Tage erneuert werden.

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/

Tendrid
quelle
2
Als Antwort darauf habe ich eine Open-Source-Bibliothek gestartet, die für euch von Nutzen sein könnte. Es ist eine oAuth-Bibliothek, die darauf abzielt, alle sozialen Netzwerke mit oAuth-Implementierungen zu unterstützen. Es werden bereits erweiterte Berechtigungen einschließlich Offline-Veröffentlichung unterstützt. code.google.com/p/socialoauth
Tendrid
Selbst offline_access-Token verfallen, wenn der Benutzer sein Passwort auf Facebook ändert.
Bemmu
Leider ist es keine "saubere" Lösung für das vorliegende Problem. Wenn Sie zuerst oder alle nach dieser Berechtigung fragen, wird der Benutzer auf die zusätzliche Berechtigung hingewiesen (z. B. kann diese Anwendung jederzeit auf Ihr Facebook-Konto zugreifen), wodurch viele potenzielle Kunden ausgeschaltet werden. Zweitens ist dieses Token nicht gültig, wenn die Verwendung sein Passwort ändert. Es muss also einen besseren Weg geben (z. B. ein Aktualisierungstoken), um ein neues access_token zu erhalten, insbesondere für Ajax-gesteuerte Rich-Client-Webanwendungen.
Vladimir
24
Laut ihrer API-Dokumentation wird offline_access ab dem 2. Mai 2012 nicht mehr unterstützt.
Ben Lesh
@Tendrid Ihre Bibliothek unterstützt nur Facebook und Twitter.
Mareoraft
30

Versuchen Sie dies möglicherweise, es wird Ihnen voll helfen

https://graph.facebook.com/oauth/authorize?
    client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
    redirect_uri=http://www.example.com/

Um ein lebenslanges Access Token zu erhalten, müssen Sie es verwenden scope=offline_access

Bedeutung von scope=offline_accessist, dass: -

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.

Laut der zukünftigen Aktualisierung von Facebook wird die offline_acees-Funktionalität ab dem 3. Oktober 2012 für immer veraltet sein. Der Benutzer erhält ein 60-tägiges langlebiges Zugriffstoken. Vor Ablauf des Zugriffstokens wird Facebook benachrichtigt oder Sie können Ihre benutzerdefinierte Funktion erhalten Benachrichtigungsfunktion, die den Ablaufwert von der Facebook-API abruft.

PrateekSaluja
quelle
10
Ich möchte Sie darüber informieren, dass sich fb in seiner API geändert hat und jetzt kein Lebenszeit-Token verfügbar ist. Jetzt ist der Offline-Zugriff 60 Tage lang aktiv.
PrateekSaluja
21

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/

Tripp Lilley
quelle
17

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.

David Pope
quelle
1
gleiche Zweifel hier David. Haben Sie weitere Informationen zum Sichern von Token gefunden, die für den Offline-Zugriff gespeichert sind?
Neal Aise
Die Dokumente von Facebook sind schrecklich, aber ich denke, die Situation ist, dass es einigermaßen sicher ist, Zugriffstoken beizubehalten, die NICHT mit offline_access erworben wurden. Es ist zwar richtig, dass jeder, der Zugriff darauf erhält (während der FB-Benutzer noch angemeldet ist), alles tun kann, wofür der Benutzer Ihnen die Erlaubnis erteilt hat, aber es ist nicht so schlimm, da die Token ungültig werden, sobald sich der Benutzer von Facebook abmeldet irgendwo. Es ist immer noch eine Sicherheitslücke (ich finde es seltsam, dass Sie Ihr App-Geheimnis nicht für die / me-Anfragen angeben müssen), aber es ist nicht unbefristet. Wenn jemand dies besser meint, kann er mich gerne korrigieren.
David Pope
8

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.

TerryMatula
quelle
3
Wenn Sie die Berechtigung 'offline_access' anfordern, läuft das Token nicht ab.
Brendan Berg
1
@Brendan: Aber es wird ungültig, sobald der Benutzer sein / ihr Facebook-Passwort ändert
Hoàng Long
@ HoàngLong ein Hinweis darauf?
Charles Prakash Dasari
4

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/

Hinweis: Wenn die Anwendung keine Offline-Zugriffsberechtigung angefordert hat, ist das Zugriffstoken zeitlich begrenzt. Zeitgebundenes Zugriffstoken wird auch ungültig, wenn sich der Benutzer von Facebook abmeldet. Wenn die Anwendung vom Benutzer die Berechtigung offline_access erhalten hat, läuft das Zugriffstoken nicht ab. Es wird jedoch ungültig, wenn der Benutzer sein Passwort ändert.

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.

imikay
quelle
3

Klicken Sie hier, um ein kurzlebiges Zugriffstoken gegen ein langlebiges / nicht ablaufendes (Seiten) zu tauschen:

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
MPaulo
quelle
1

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.

Sreekanth P.
quelle
1

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

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 
Herr Tung
quelle
0

Ü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.

Sreekanth P.
quelle
0

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 ...

Uri
quelle
0

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.

Geben Sie hier die Bildbeschreibung ein

martinedwards
quelle