Ich arbeite an einem Projekt, dessen Datenquellen Facebook-Seiten sind. Es importiert regelmäßig einige Daten ohne GUI. Dann verwenden wir eine Web-App, um die Daten anzuzeigen, die wir bereits haben.
Nicht alle Informationen sind öffentlich. Das heißt, ich muss einmal auf die Daten zugreifen und sie dann behalten. Ich kenne den Prozess jedoch nicht und habe noch kein gutes Tutorial dazu gefunden. Ich glaube, ich brauche eine access_token
, wie kann ich sie Schritt für Schritt vom Benutzer bekommen? Der Benutzer ist Administrator einer Facebook-Seite. Muss er der Seite eine unserer FB-Apps hinzufügen?
EDIT: Danke @phwd für den Tipp. Ich habe ein Tutorial erstellt, wie man ein permanentes Seitenzugriffstoken erhält, auch wenn es offline_access
nicht mehr vorhanden ist.
EDIT: Ich habe gerade herausgefunden, dass es hier beantwortet wird: Langlebiges FB-Zugriffstoken für den Server zum Abrufen von FB-Seiteninformationen
Antworten:
Nach den Anweisungen in der Dokumentation zu den erweiterten Seitentoken von Facebook konnte ich ein Seitenzugriffstoken erhalten, das nicht abläuft.
Ich empfehle, für alle diese Schritte den Graph API Explorer zu verwenden, sofern nicht anders angegeben.
0. Erstellen Sie eine Facebook-App
Wenn Sie bereits eine App haben , fahren Sie mit Schritt 1 fort.
Sie müssen die Berechtigungen nicht ändern. Sie benötigen lediglich eine App, die nicht verschwindet, bevor Sie mit Ihrem Zugriffstoken fertig sind.
1. Holen Sie sich das User Short-Lived Access Token
Das Token, das im Feld "Zugriffstoken" angezeigt wird, ist Ihr kurzlebiges Zugriffstoken.
2. Generieren Sie ein langlebiges Zugriffstoken
Befolgen Sie diese Anweisungen aus den Facebook-Dokumenten und senden Sie eine GET-Anfrage an
Geben Sie die ID und das Geheimnis Ihrer App sowie das kurzlebige Token ein, das im vorherigen Schritt generiert wurde.
Sie können den Graph API Explorer nicht verwenden . Aus irgendeinem Grund bleibt es bei dieser Anfrage hängen. Ich denke, das liegt daran, dass die Antwort nicht JSON ist, sondern eine Abfragezeichenfolge. Da es sich um eine GET-Anfrage handelt, können Sie einfach die URL in Ihrem Browser aufrufen.
Die Antwort sollte folgendermaßen aussehen:
"ABC123" ist Ihr langlebiges Zugriffstoken. Sie können es zur Überprüfung in den Access Token Debugger einfügen. Unter "Läuft ab" sollte es so etwas wie "2 Monate" haben.
3. Benutzer-ID abrufen
Stellen Sie mithilfe des langlebigen Zugriffstokens eine GET-Anforderung an
Das
id
Feld ist Ihre Konto-ID. Sie benötigen es für den nächsten Schritt.4. Holen Sie sich ein permanentes Seitenzugriffstoken
Stellen Sie eine GET-Anfrage an
Die JSON-Antwort sollte ein
data
Feld enthalten, unter dem sich ein Array von Elementen befindet, auf die der Benutzer Zugriff hat. Suchen Sie das Element für die Seite, von der aus Sie das permanente Zugriffstoken erhalten möchten. Dasaccess_token
Feld sollte Ihr permanentes Zugriffstoken haben. Kopieren Sie es und testen Sie es im Access Token Debugger . Unter "Läuft ab" sollte "Nie" stehen.quelle
message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100
Gehen Sie zum FB Access Token Debugger und testen Sie Ihr long_lived_access_token. Konsequent habe ich gesehen, dass nach ein paar Minuten, wenn Sie zurückgehen und das long_lived_access_token erneut überprüfen, der FB Access Token Debugger anzeigt, dass dieses Token permanent ist (verfallen: nie)(#100) Tried accessing nonexisting field (accounts) on node type (Page)
Fehler ... Schritt 5 kann nicht fortgesetzt werden ... Trotzdem, danke ... LE: Lesen Sie den letzten Teil der Antwort von @Vlasec. Sie können das permanente Zugriffstoken erhalten, indem Sie / {pageId}? Fields = access_token & access_token = {long_lived_access_token} abfragen. Das Problem wurde behoben.https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Hier ist meine Lösung, die nur den Graph API Explorer und den Access Token Debugger verwendet :
(Getestet mit API Version 2.9-2.11, 3.0-3.1)
quelle
Zusätzlich zu den empfohlenen Schritten in der Vlasec- Antwort können Sie Folgendes verwenden:
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
quelle
Ich habe ein PHP-Skript erstellt, um es einfacher zu machen. Erstellen Sie eine App . Wählen Sie im Graph API Explorer Ihre App aus und erhalten Sie ein Benutzertoken mit der Berechtigung "manage_pages" und "Publish_pages". Die ID Ihrer Seite finden Sie unten auf der Info-Seite. Füllen Sie die Konfigurationsvariablen aus und führen Sie das Skript aus.
quelle
Eine weitere PHP-Antwort, um das Leben leichter zu machen. Aktualisiert für Facebook Graph API 2.9 . Einfach auffüllen und laden.
Nachtrag: (Alternative)
2.9 Graph ab, können Sie viel von der Mühe, sich einen langen Zugang durch einfaches Anklicken Token überspringen Zugriffstoken Extend am unteren Rand des Access - Token - Debugger - Tool nach einem kurzen Zugriffstoken gedebuggt haben. Mit Informationen über
pageid
und bewaffnetlonglivedtoken
, führen Sie das folgende PHP aus, um einen permanenten Zugriffstoken zu erhalten.Obwohl der zweite Code Ihnen viel Ärger erspart, empfehle ich, den ersten PHP-Code auszuführen, es sei denn, Sie haben es eilig, da er die Seiten-ID und die Benutzer-ID überprüft. Der zweite Code funktioniert nicht, wenn Sie versehentlich ein Benutzertoken auswählen.
quelle
Graph API Explorer
Felds "Anwendung" auswählen , bevor Sie ein Token anfordern können.v2.9
beim zweiten Anruf entfernen und das hat bei mir funktioniert. WierdIch habe diese Schritte ausprobiert: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer
Holen Sie sich ein permanentes Seitenzugriffstoken
Ein Tipp, es nur für mich gearbeitet , wenn die Seite Sprache ist Englisch .
quelle
Wenn Sie nur Seitendaten anfordern, können Sie ein Seitenzugriffstoken verwenden. Sie müssen den Benutzer nur einmal autorisieren, um das Benutzerzugriffstoken zu erhalten. Verlängern Sie die Gültigkeit auf zwei Monate und fordern Sie dann das Token für die Seite an. Dies alles wird in Szenario 5 erläutert . Beachten Sie, dass das erworbene Seitenzugriffstoken nur so lange gültig ist, wie das Benutzerzugriffstoken gültig ist.
quelle
Während ich den permanenten Zugriffstoken erhielt, folgte ich den oben genannten 5 Schritten, wie Donut erwähnte. Im fünften Schritt wird beim Generieren eines permanenten Zugriffstokens jedoch das langlebige Zugriffstoken (das 2 Monate gültig ist) zurückgegeben, kein permanentes Zugriffstoken (das niemals abläuft). Was mir aufgefallen ist, dass die aktuelle Version der Graph API V2.5 ist. Wenn Sie versuchen, das permanente Zugriffstoken mit V2.5 abzurufen, erhalten Sie ein langlebiges Zugriffstoken. Versuchen Sie, einen API-Aufruf mit V2.2 durchzuführen (wenn Sie die Version im Grafik-API-Explorer nicht ändern können, klicken Sie auf den API-Aufruf https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} in der neuen Registerkarte mit V2.2), dann erhalten Sie das permanente Zugriffstoken (das niemals abläuft).
quelle
Zusätzlich zu den genannten Methoden ist zu erwähnen, dass Sie für Server-zu-Server-Anwendungen auch diese Form des permanenten Zugriffstokens verwenden können: app_id | app_secret Diese Art von Zugriffstoken wird als App-Token bezeichnet. Es kann im Allgemeinen verwendet werden, um die Graph-API aufzurufen und öffentliche Knoten in Ihrem Anwendungs-Back-End abzufragen. Es wird hier erwähnt: https://developers.facebook.com/docs/facebook-login/access-tokens
quelle
Dank @donut habe ich es geschafft, das nie ablaufende Zugriffstoken in JavaScript zu erhalten.
und dann habe ich das gespeicherte Zugriffstoken so verwendet
Ich hoffe, dass jemand diesen Code kürzen kann, weil er etwas chaotisch ist, aber es war der einzige Weg, an den ich denken konnte.
quelle
Wenn Sie die Facebook-App haben, können Sie es mit App-ID und App-Geheimnis versuchen.
Mögen :
Das Token muss nicht häufig geändert werden.
quelle
Anwendungsanforderungslimit erreicht (# 4) - FB API v2.1 und höher
Diese Antwort führte mich zur "ultimativen Antwort für uns" und ist daher sehr verwandt, so dass ich sie hier anhänge. Obwohl es mit dem oben Gesagten zusammenhängt, ist es anders und es scheint, dass FB den Prozess etwas vereinfacht hat.
Unsere Freigabezählungen auf unserer Website funktionierten nicht mehr, als FB die API auf Version 2.1 umstellte. In unserem Fall hatten wir bereits eine FB-App und verwendeten NICHT den FB-Login. Wir mussten also ein FB APP Token besorgen , um die neuen Anfragen zu stellen. Dies ist der 23. August 2016.
Wählen Sie die API-Version aus, verwenden Sie GET und fügen Sie Folgendes ein:
Sie sollten Ihre App-ID und Ihr App-Geheimnis von Ihrer App-Seite abrufen. Hauptseite der FB Apps-Entwickler
Führen Sie die Diagrammabfrage aus und Sie werden sehen:
Wo
und wird Ihre App-ID von Ihrer FB-App-Seite und die generierte FB-App HASH sein, die Sie gerade erhalten haben.Als nächstes testen Sie Ihr neues APP-Zugriffstoken: FB Access Token-Tester
Sie sollten sehen, indem Sie die einfügen
in den Token-Tester ein einzelnes App-basiertes Token ohne Ablaufdatum / -zeit.In unserem Fall verwenden wir den FB js sdk, also haben wir unseren Aufruf so geändert (bitte beachten Sie, dass dies NUR die Anzahl der Freigaben und nicht die Anzahl der Freigaben und Kommentare wie früher kombiniert) :
Dies funktioniert jetzt ordnungsgemäß. Dies erforderte viel Suche und einen offiziellen Fehlerbericht mit FB, um zu bestätigen, dass wir anfangen müssen, tokenisierte Anfragen an die FB-API zu stellen. Nebenbei habe ich darum gebeten, dass sie (FB) einen Hinweis auf den Fehlercode (# 4) hinzufügen, der die tokenisierte Anforderung erwähnt.
Ich habe gerade einen weiteren Bericht von einem unserer Entwickler erhalten, dass unsere FB-Kommentaranzahl aufgrund des neuen Bedarfs an Token-Anforderungen ebenfalls fehlerhaft ist, daher werde ich dies entsprechend aktualisieren.
quelle
Viele dieser Beispiele funktionieren nicht, ich bin mir nicht sicher, ob es an 2.9V liegt, aber ich habe mir den Kopf geschlagen. Wie auch immer, ich habe die @ dw1-Version genommen und sie mit Hilfe von @KFunk-Video ein wenig modifiziert und dies für mich für 2.9 zum Laufen gebracht. Hoffe das hilft.
quelle
Ab April 2020 liefen meine zuvor permanenten Seitentoken zwischen 1 und 12 Stunden ab. Ich habe angefangen, Benutzertoken mit der
manage_pages
Erlaubnis zu verwenden, um das vorherige Ziel zu erreichen (Abfragen der Ereignisse einer Seite). Diese Token scheinen dauerhaft zu sein.Ich habe ein Python-Skript basierend auf den Informationen in diesem Beitrag erstellt, der unter github.com/k-funk/facebook_permanent_token gehostet wird, um zu verfolgen, welche Parameter erforderlich sind und welche Methoden zum Abrufen eines permanenten Tokens funktionieren.
quelle
Ich habe diese Antwort gefunden , die sich auf dieses Tool bezieht, das wirklich sehr geholfen hat.
Ich hoffe, diese Antwort ist noch gültig, wenn Sie dies lesen.
quelle