Ich bin mir bewusst, dass es viele Fragen zu Facebook-Zugriffstoken und der damit verbundenen Trauer gibt, aber trotz vieler Experimente und des Lesens vieler frustrierend vager Blog-Artikel (FB und andere) habe ich immer noch Schwierigkeiten, eine klare Antwort auf meine Bedürfnisse zu erhalten . Lassen Sie mich meinen bisherigen Prozess kurz und bündig zusammenfassen:
- Ich erstelle eine Website, die serverseitig die Beiträge / Status von einer einzelnen Facebook-Seite abrufen muss
- Ich bin ein Administrator dieser Facebook-Seite
- Ich habe eine Facebook App erstellt
- Mit dem Facebook Graph API Explorer habe ich einen kurzlebigen Schlüssel generiert, der mit meiner App und meinem Konto verbunden ist und meinem Konto die Berechtigung zum Anzeigen der Zugriffstoken für meine Seiten erteilt
- Ich habe meine kurzlebig Schlüssel zu einem langlebigen Schlüssel (60 Tage) ala Szenario umgewandelt 4 aus diesem
Und hier stecke ich fest. Mein 60-Tage-Schlüssel funktioniert gut, damit mein Server die benötigten Informationen von der Seite abruft, aber soweit ich das beurteilen kann, gibt es keine Möglichkeit, diesen 60-Tage-Schlüssel programmgesteuert zu erweitern. Ich kenne auch keine Möglichkeit, einen neuen kurzlebigen Schlüssel zu generieren, ohne manuell zum Facebook Graph API Explorer zu gehen und einen zu erstellen.
Da mein Server die Anforderungen an die Facebook-API stellt und kein benutzerbasiertes System (bei dem ich leicht verlangen kann, dass ein Benutzer die Facebook-App erneut autorisiert), entsteht ein sehr klobiges System. Gibt offline_access
es wirklich keine dauerhafte Möglichkeit, dass mein Server Informationen von meiner eigenen Seite abruft , da Facebook veraltet ist? Muss ich wirklich alle 60 Tage einen neuen Schlüssel von Hand erstellen und meinen Server manuell damit aktualisieren?
Oder fehlt mir etwas?
Aktualisieren:
Die hier gefundene Schritt-für-Schritt-Anleitung wurde in eine eigene Antwort migriert .
quelle
Antworten:
Nachdem festgestellt wurde, dass es möglich ist, ein Facebook-Seitenzugriffstoken zu generieren, das nicht abläuft (mithilfe von @Igy), finden Sie hier eine klare, schrittweise Anleitung für alle, die dasselbe suchen:
manage_pages
Berechtigung hinzufügenhttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
Sie sich die Seite, von der Sie Informationen abrufen möchtenExpires: Never
!Das sollte es tun. Sie sollten jetzt über ein Facebook-Seitenzugriffstoken verfügen, das nicht abläuft, es sei denn:
All dies führt dazu, dass das Zugriffstoken ungültig wird.
Wenn dies
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
der Fall ist, rufen Sie den Access Token Debugger auf , kopieren Sie den Wert vonUser ID
und verwenden Sie ihn, um den "Ich" -Teil der URL in Schritt 9 zu ersetzen.quelle
manage_pages
Option befindet sich unter derExtended Permissions
Registerkarte.Dies wird in dem überdachten Offline - Zugriff deprecation Dokument
Verwenden Sie das 60-Tage-Token für den Seitenadministrator, um ein Seitenzugriffstoken (über
/PAGE_ID?fields=access_token
oder/me/accounts
) abzurufen. Das Seitenzugriffstoken hat keine Ablaufzeitquelle
Ein Ansatz, der 2019 funktioniert
Ich habe kürzlich versucht, etwas Ähnliches zu erreichen (wie in diesem Thread beschrieben), aber ich wollte sicherstellen, dass die aktuellen Richtlinien von Facebook eingehalten werden. Deshalb habe ich ein wenig recherchiert und hier teile ich mit, was ich gefunden habe.
Mein Anwendungsfall
Wie ich bereits sagte, ist mein Anwendungsfall dem hier beschriebenen sehr ähnlich. das ist:
Dies ist meiner Ansicht nach ein legitimer Anwendungsfall, aber ich war mir nicht sicher, wie ich ihn auf eine Weise implementieren sollte, die den Richtlinien von Facebook entspricht.
Die akzeptierte Antwort
Ich habe die Schritte der akzeptierten Antwort befolgt und es hat funktioniert, außer dass sich die Dinge anscheinend geändert haben: Obwohl das generierte Seitentoken nicht abläuft,
access to data
läuft es nach etwa 60 Tagen ab. Sie werden dies auch sehen, wenn Sie die Prozedur befolgen und das Seitentoken im FB Token Debugger Tool überprüfen .Außerdem ist die Tatsache, dass die generierten Seitentoken an das Benutzerkonto gebunden sind, ebenfalls bedauerlich, denn wenn der Benutzer sein Kennwort aktualisiert, wird das Seitentoken ebenfalls ungültig.
Wie es 2019 geht
Nach mehreren Stunden Recherche bin ich auf den folgenden Artikel zur Facebook-Dokumentation gestoßen: Business Login for Direct Businesses .
Es stellt sich heraus, dass es nun möglich ist, gemäß den im obigen Artikel beschriebenen Schritten ein Seitentoken zu generieren, das keinem bestimmten Facebook-Benutzerkonto zugeordnet ist und nicht abläuft (es sei denn, die FB-App wird gelöscht oder das zugrunde liegende Anwendungstoken wird gelöscht, weißt du ...)
Hier sind die Schritte und die wichtigsten Teile:
manage_pages
undpublish_pages
.Dieses Token läuft niemals ab und ist nicht an einen bestimmten Facebook-Nutzer gebunden. Es ist also genau das, was wir brauchen!
Der letzte Teil besteht darin, sicherzustellen, dass Ihre Facebook-App von Facebook genehmigt wird. Es ist in der Tat der wichtigste Teil, denn das gesamte Verfahren ist wertlos, wenn die Leute unsere Beiträge nicht sehen.
Ich wollte sicher wissen, dass ich mich auf das oben beschriebene Verfahren verlassen kann, um etwas für meinen Kunden zu erstellen, ohne dass Facebook es am Ende ablehnt. Deshalb habe ich vorher (dh bevor ich anfing, an dem Projekt meines Kunden zu arbeiten) den gesamten Prozess von durchlaufen Erstellen einer Seite, einer App, eines Business Manager-Kontos usw. Ich habe mein Unternehmen überprüft. Ich habe meine App zur Überprüfung eingereicht. In meiner Anfrage war ich sehr spezifisch in Bezug auf meinen Anwendungsfall und betonte, dass die App für den "Selbstgebrauch" bestimmt ist (dh, dass die Organisation eine App für sich selbst entwickelt, nicht für andere Facebook-Benutzer). Ich wurde ohne weniger als 24 Stunden genehmigt.
Einige weitere Hinweise zum App-Überprüfungsprozess:
curl
Dienstprogramm vorgestellt (um das Seitentoken zu generieren und Beiträge auf der Facebook-Seite zu verfassen). Ich habe auch gezeigt, wie ich Business Manager verwendet habe, um den Systembenutzer mit der Seite zu verknüpfen und ein Token zu generieren, und so weiter.Ich hoffe, dass diese Informationen für Menschen mit ähnlichen Anwendungsfällen nützlich sind.
quelle
Vielen Dank an @redhotvengeance für die Schritt-für-Schritt-Anleitung.
Nach einiger Zeit ist nun in der Facebook-Dokumentation klar beschrieben:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
quelle
Sie können auch über das App-Dashboard auf Facebook kopieren und einfügen. Die Schritte:
Gehen Sie zu https://developers.facebook.com
Wählen Sie Ihre App in der oberen rechten Ecke der Seite aus (Bild davon, wie sie aussieht)
Denken Sie daran, dass Ihr Token zwar theoretisch nicht abläuft, aber direkt mit dem Facebook-Konto verknüpft ist, bei dem Sie angemeldet sind. Angenommen, Sie ändern Ihr Passwort oder entfernen die Berechtigungen zwischen Ihrem Konto und Ihrer App. Dann ist Ihr Token nicht mehr gültig.
quelle