Zugriffstoken für Facebook-Seiten - Laufen diese ab?


70

Ich erstelle eine App, mit der Benutzer ihre Facebook-Fanseiten verwalten können. Dies erfordert die folgenden zwei Zugriffstoken:

  1. Ein Benutzerzugriffstoken
  2. Ein Seitenzugriffstoken

Ich bin mit Benutzerzugriffstoken ziemlich vertraut, aber nicht mit Seitenzugriffstoken.

Weiß jemand, wie lange das Seitenzugriffstoken gültig bleibt? Alles, was ich auf der Facebook-Website finden kann, ist dieser kurze Absatz , in dem nichts über den Ablauf erwähnt wird.

Kann ich davon ausgehen, dass das offline_accessSeitenzugriffstoken auch unbegrenzt gültig ist , wenn ich das Benutzerzugriffstoken mit der Berechtigung anfordere (es sei denn, der Benutzer ändert sein Kennwort oder deaktiviert meine App manuell)?

Ich frage, weil ich wissen möchte, wie oft ich die Facebook Graph-API abfragen und Seitenzugriffstoken erwerben soll. Sollte ich sie einfach einmal anfordern, wenn sich der Benutzer registriert? Oder sollte ich sie bei jedem API-Aufruf anfordern, falls sie sich ständig ändern? Letzteres ist offensichtlich anstrengender!


2
+1 gute Frage und auch gut geschrieben. Sie sollten dies auch in der Facebook-Entwicklergruppe auf Facebook veröffentlichen, falls Sie dies noch nicht getan haben.
Bool.dev

1
+1 für eine gute Frage. Dies sollte auf jeden Fall zur Facebook-Entwicklergruppe hinzugefügt werden, und Sie sollten eine Anfrage generieren, um es der Dokumentation hinzuzufügen. Mein Bauchgefühl besagt, dass sich diese Token genauso ändern werden, wie sich Benutzerzugriffstoken im Laufe der Zeit ändern. Hoffentlich kann jemand aus Erfahrung sprechen.
Andrew Cox

sehr gute Frage. Ich möchte auch die richtige Lösung für Ihre Frage wissen.
Frank Myat Do

Haben wir schon eine Antwort auf diese Frage? Und wenn sie ablaufen, gibt es eine Möglichkeit zu überprüfen, wie viel Zeit von einem Token noch übrig ist?
Atwellpub

Antworten:


42

Seitentoken verfallen, wenn das Zugriffstoken für den Benutzer abläuft, von dem das Seitentoken generiert wurde. Bearbeiten 6.28.2013: Wenn Sie das Benutzerzugriffstoken erweitern und ein neues Seitenzugriffstoken für den Benutzer erhalten, läuft dieses Seitentoken nur ab, wenn der Benutzer Ihre App abautorisiert.

Der Offline-Zugriff ist jetzt veraltet, aber Sie können ein Zugriffstoken auf 60 Tage verlängern. Wenn Sie das Zugriffstoken des Benutzers erweitern, wird der Ablauf der von diesem Benutzerkonto generierten Seitentoken ebenfalls verlängert, damit er nicht abläuft (bearbeitet am 28.08.2013). Der Wert für die Seitentoken kann sich nach dem Erweitern ändern. Stellen Sie daher sicher, dass Sie /accountsnach dem Erweitern des Benutzertokens neue Seitentoken aus der Diagrammverbindung des Benutzers abrufen.

Sie können diese Zugriffstoken weiterhin einmal pro Tag erweitern. Daher sollten Sie die Zugriffstoken jeden Tag neu generieren, an dem der Benutzer mit Ihrer App interagiert.

Siehe https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens https://developers.facebook.com/docs/facebook-login/access-tokens/#extending https: // Entwickler .facebook.com / docs / facebook-login /
https://developers.facebook.com/roadmap/offline-access-removal/ https://developers.facebook.com/blog/post/2011/05/13/how -to - Handle-Expired-Access-Token /


3
+1 für diese Antwort. Hier erfahren Sie, wie Sie dies bestätigen können. Zuerst eine neue App erstellen und die offline_access migraton ermöglichen. Zweitens gewähren Sie manage_pagesdieser App im Grafik-API-Explorer ein Zugriffstoken für diese App . Drittens schauen Sie auf den Zugriffstoken Ihrer Seiten nach /me/accounts. Schließlich verwenden Sie die Debug - Konsole den Zugriffstoken Ablauf zu überprüfen. In der Tat verfallen die Seitenzugriffstoken nach der Migration nach 1 Stunde, anstatt auf unbestimmte Zeit zu dauern. Zeit, deine Apps zu ändern!
Logan

"the page tokens generated from that user account will also have their expiration extended to match"ist leicht irreführend. Durch die Erweiterung des Zugriffstokens des Benutzers wird der Ablauf der vorhandenen Seitenzugriffstoken NICHT erhöht . Stattdessen können Sie nach dem Erweitern des Zugriffstokens eines Benutzers neue Token von/me/accounts
Logan

Danke @logan. Ich habe die Antwort aktualisiert, um festzustellen, dass sich die Seitenzugriffstoken ändern können. Von developer.facebook.com/roadmap/offline-access-removal : "If the access_token was originally generated from a client-side OAuth call or through a signed_request, the endpoint will actually return a new access_token." Ich denke, seit Sie mit dem Graph API Explorer getestet haben, wurde dieses Zugriffstoken clientseitig generiert und daher nach seiner Erweiterung geändert.
Rmarscher

1
Wenn Sie versuchen, ein Seitenzugriffstoken auszutauschen (anstatt das Benutzerzugriffstoken auszutauschen), wird dieser Fehler {"error_code":1,"error_msg":"An unknown error occurred"}
angezeigt

Aber hier: developer.facebook.com/roadmap/offline-access-removal/… Ich habe gelesen: "Durch die Verwendung eines langlebigen Benutzerzugriffstokens werden durch Abfragen des Endpunkts [Benutzer-ID] / Konten jetzt Seitenzugriffstoken bereitgestellt, die nicht ablaufen für Seiten, die ein Benutzer verwaltet. ". Bedeutet das, dass sie NIE ablaufen?
Glooh

12

Sie können ein Seitenzugriffstoken so erweitern, dass es niemals abläuft. Die Dokumentation ist etwas matschig, aber die folgenden Seiten enthalten relevante Informationen, und Sie müssen offensichtlich Administrator der Seite sein. Achten Sie genau auf Szenario 4 und 5 unter dem zweiten Link.

https://developers.facebook.com/docs/reference/api/page/#page_access_tokens https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token

Mit dem Graph Explorer können Sie ganz einfach Token von Facebook abrufen. Mit dem Diagramm-Explorer können Sie auch das Token debuggen, in dem das Ablaufdatum aufgeführt ist, sodass Sie überprüfen können, ob es niemals abläuft. Grafik-Explorer: https://developers.facebook.com/tools/explorer

Klicken Sie auf die Schaltfläche Get Access Token, um Ihr Token abzurufen. Wenn Sie Ihre ID in der Abfrageleiste behalten, hängen Sie einfach / Konten an Ihre ID an, damit sie so aussieht : /123456789101112/accounts. Stellen Sie sicher, dass es sich um eine GET-Anforderung handelt (das Dropdown-Menü links neben der Abfrageleiste).

Dadurch werden alle Seiten abgerufen, für die Sie konfiguriert sind. Sie müssen dann eine GET-Anfrage stellen an:

/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN 

Ihre APP_ID und APP_SECRET finden Sie in den Anwendungsverwaltungseinstellungen. Verwenden Sie Ihr persönliches Zugriffstoken als letzten Parameter (EXISTING_ACCESS_TOKEN). Dadurch wird ein 60-Tage-Token für den persönlichen Zugriff zurückgegeben. Kopieren Sie dieses Token in die Zugriffstoken-Leiste, die sich über der Abfrageleiste befindet. Stellen Sie nun eine GET-Anfrage an USER_ID / accounts, wie wir es am Anfang getan haben. Dadurch wird erneut eine Liste der Seiten zurückgegeben, für die Sie konfiguriert sind.

Diesmal verfallen jedoch die mit den Seiten aufgelisteten Seitentoken nicht. Sie können dies überprüfen, indem Sie ein Seitentoken in die Zugriffstokenleiste kopieren und auf die Schaltfläche Debuggen klicken. Auf diese Weise erhalten Sie Details zu diesem Zugriffstoken, einschließlich der Ablaufzeit, die in diesem Fall niemals sein sollte.

AKTUALISIEREN

Ich habe auch festgestellt, dass der Grafik-Explorer von Facebook manchmal mit dem Benutzerkontext verwechselt wird und möglicherweise nicht immer zuverlässig ist. Alternativen sind Fiddler oder Postman .


1
Ich habe diese Posts von Operation Developer Love nie gelesen, weil sie meine Handflächen zum Schwitzen bringen ... Aber dank Ihnen kann ich mich jetzt endlich ausruhen, nachdem ich das böse "Seitenzugriffstoken" täglich aktualisieren muss, bevor mein Cron-Job ausgeführt wird ... :)
Rapcal

@ Simon.Ponder: Weißt du, ob dieses nie ablaufende Token auch zum Abrufen des Streams des Benutzers (oder anderer öffentlicher Streams) funktioniert? Ich könnte zwei Monate warten, um es zu versuchen, hätte aber lieber eine schnellere Antwort. thx

Diese Token sind für die Anwendung bestimmt, die ein Administrator genehmigen würde. Außerdem funktionieren sie genau wie jedes andere Seitenzugriffstoken. Wenn Sie nach einem Benutzer fragen, der die Seite besucht, müssen Sie die Genehmigung von jedem Benutzer einholen.
Simon.Ponder

@ Simon.Ponder danke, danke, danke für das Token, das nicht abläuft.
Whitesiroi

4

Ich bin nicht sicher, ob Facebook Änderungen vorgenommen hat, um diese Fehler zu beheben, aber es scheint, dass Benutzerzugriffstoken nicht ablaufen, sobald dem Benutzer Seitenzugriffstoken gewährt wurden. Basierend auf meinen Tests geht der Fluss ungefähr so:

  1. Benutzerzugriffstoken angefordert -> 60-Tage-Benutzertoken wird ausgestellt
  2. Angeforderte Seitenzugriffstoken -> Ausgestellte Seitenzugriffstoken, die nie abgelaufen sind, und das Erstbenutzerzugriffstoken werden so aktualisiert, dass sie ebenfalls nie ablaufen.

Ich hoffe, dies klärt die Verwirrung hier auf. Ich habe dies mit vielen verschiedenen Benutzern in unserer App getestet und sehe jedes Mal dasselbe.

Wenn keine Seitenzugriffstoken angefordert werden, läuft das ursprüngliche Benutzerzugriffstoken nach 60 Tagen ab.


Beantworte meine eigene Frage, ja das funktioniert immer noch. Es funktioniert jedoch nicht, wenn der Benutzer keine Seiten hat (was wohl Sinn macht) - gibt es eine Möglichkeit, dies für Benutzer ohne Seiten zum Laufen zu bringen?

Ja, das ist immer noch der Fall. Ich werde das Seitenzugriffstoken verwenden, um die Sicherheit zu gewährleisten, falls Facebook beschließt, dies zu beheben und Benutzerzugriffstoken ungültig zu machen.
Ozren1983

2

Das Facebook-Seitenzugriffstoken ist dem Benutzerzugriffstoken sehr ähnlich, mit der Ausnahme, dass "es sich als Benutzer ausgibt" als Administrator der Seite und deren Verwaltung ermöglicht [die Berechtigung zum Verwalten der Seite ist erforderlich].

Wenn der App die Berechtigung Offline_access erteilt wird, läuft die Seite access_token NICHT ab (es sei denn, der Benutzer ändert sein Kennwort oder deaktiviert die App manuell).

Verwenden Sie den folgenden Link, um die Details eines ausgestellten Zugriffstokens zu überprüfen.

https://developers.facebook.com/tools/debug/


Woher haben Sie die Informationen darüber, dass das Zugriffstoken der Seite abläuft, wenn ein Benutzer sein Kennwort ändert? Nicht, dass ich dir nicht glaube, aber wenn es auf undokumentiertem Verhalten basiert, vermute ich, dass sich dies ändern kann (noch mehr Änderungen als das dokumentierte Verhalten, das sich auch ständig ändert :))
Tom Lianza

:) Was du gesagt hast ist richtig. Bei Facebook kann sich jederzeit ohne vorherige Ankündigung etwas ändern. :) Dies wurde in dem Abschnitt gefunden, der die Funktionsweise von Zugriffstoken beschreibt (es war eine allgemeine Beschreibung). Ich habe auch mit dem obigen Link getestet, der sich als gültig erwiesen hat. Aber wie Sie sagten, vielleicht kann es sich in Zukunft ändern.
Robin

4
Diese Antwort ist veraltet . Siehe die Antwort von @rmarscher über die Ablehnung von offline_access.
Logan


1

Die Dokumentation von Facebook zu diesem Thema (langlebige Token für den Seitenzugriff) stimmt nicht mit dem überein, was in der Realität passiert. In der Dokumentation wird behauptet, dass Seitenzugriffstoken, die über erweiterte / langlebige Benutzerzugriffstoken erworben wurden, niemals ablaufen. In der Realität laufen diese Seitenzugriffstoken jedoch innerhalb von 60 Tagen ab.

Siehe den Facebook-Fehler: http://developers.facebook.com/bugs/461517520524921


1
  • Das Standard-Seitenzugriffstoken ist von kurzer Dauer und läuft in 1 oder 2 Stunden ab. Wenn Sie die Lebensdauer verlängern möchten, müssen Sie das kurzlebige auf ein langlebiges Zugriffstoken erweitern, damit es ungefähr 2 Monate hält.
  • Die Berechtigung offline_accessist jetzt veraltet.
  • Das Zugriffstoken läuft nicht ab, wenn eine Benutzeränderung ein Kennwort ist.

In einer anderen Frage erkläre ich, wie das Seitenzugriffstoken erweitert wird .


0

Seitenzugriffstoken sind abgelaufen, wenn das Zugriffstoken des Benutzers abgelaufen ist. Sie können das Benutzerzugriffstoken auf bis zu 60 Tage verlängern, damit das Seitenzugriffstoken eine lange Lebensdauer hat.

Schauen Sie sich meinen Blog an und befolgen Sie die Schritt-für-Schritt-Anleitung zum Abrufen eines erweiterten Zugriffstokens und zum Abrufen der Fanpage-Zugriffstoken.


4
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen. Bitte posten Sie auch keine verkürzten / verschleierten URLs. Menschen sollten in der Lage sein zu sehen, wo ihre Klicks landen werden.
Andrew Barber
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.