wake-up-neo.com

Langlebiges FB-Zugriffstoken für den Server zum Abrufen von FB-Seiteninformationen

Ich bin mir bewusst, dass es viele Fragen zu Facebook-Zugriffstoken und der damit verbundenen Trauer gibt, aber obwohl ich viel experimentiert und viele frustrierend vage Blog-Artikel gelesen habe (FB und andere), habe ich immer noch Probleme, eine klare Antwort auf meine Bedürfnisse zu finden . Lassen Sie mich meinen bisherigen Prozess kurz 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 erteilt, die Zugriffstoken für meine Seiten anzuzeigen
  • Ich habe meinen kurzlebigen Schlüssel in einen langlebigen Schlüssel (60 Tage) konvertiert, wie in Szenario 4 von this

Und hier stecke ich fest. Mein 60-Tage-Schlüssel funktioniert einwandfrei, damit mein Server die erforderlichen 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 wechseln und einen zu erstellen.

Da es sich bei meinem Server um den Server handelt, der die Anforderungen an die Facebook-API stellt, und nicht um ein benutzerbasiertes System (bei dem ich leicht einen Benutzer auffordern könnte, die Facebook-App erneut zu autorisieren), entsteht ein sehr klobiges System. Da Facebook veraltet ist offline_access, gibt es wirklich keine dauerhafte Möglichkeit, dass mein Server Informationen von meiner eigenen Seite abruft? Muss ich wirklich alle 60 Tage einen neuen Schlüssel von Hand erstellen und meinen Server manuell damit aktualisieren?

Oder fehlt mir etwas?

Update:

Die zuvor hier beschriebene Schritt-für-Schritt-Anleitung wurde in eine eigene migriert Antwort .

112
redhotvengeance

Dies sind die Schritte, die zuvor in der Frage behandelt wurden - sie wurden auf diese Antwort migriert.

Nachdem wir festgestellt haben, dass es möglich ist, ein Facebook-Seitenzugriffstoken zu generieren, das nicht abläuft (mithilfe von @Igy), finden wir hier eine klare schrittweise Anleitung für alle, die dasselbe suchen:

  1. Stellen Sie sicher, dass Sie der Administrator der FB-Seite sind, von der Sie Informationen abrufen möchten
  2. Erstelle eine FB App (sollte mit dem gleichen Benutzerkonto wie der Seitenadministrator sein)
  3. Gehen Sie zum Facebook Graph API Explorer
  4. Wählen Sie oben rechts aus der Klappliste "Anwendung" die von Ihnen erstellte FB-App aus
  5. Klicken Sie auf "Get Access Token".
  6. Stellen Sie sicher, dass Sie die Berechtigung manage_pages Hinzufügen
  7. Konvertieren Sie dieses kurzlebige Zugriffstoken in ein langlebiges, indem Sie den folgenden Graph API-Aufruf ausführen: https://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>
  8. Besorgen Sie sich das neue, langlebige Zugriffstoken, das zurückgegeben wurde
  9. Rufen Sie die Graph-API auf, um Ihre Konten mit dem neuen Token für langlebigen Zugriff anzuzeigen: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. Nehmen Sie den access_token Für die Seite, von der Sie Informationen abrufen
  11. Lint das Token, um zu sehen, dass es auf Expires: Never Gesetzt ist!

Das sollte es tun. Sie sollten jetzt ein Facebook-Seitenzugriffstoken haben, das nicht abläuft, es sei denn:

  • Sie ändern Ihr Facebook-Passwort
  • Sie verlieren den Administratorzugriff für die Zielseite
  • Sie löschen oder deaktivieren Ihre Facebook-App

In jedem Fall wird das Zugriffstoken ungültig.

Wenn Sie (#100) Tried accessing nonexisting field (accounts) on node type (Page) Erhalten, gehen Sie zu Access Token Debugger , kopieren Sie den Wert von User ID Und ersetzen Sie den "me" -Teil der URL in Schritt 9.

182
redhotvengeance

Dies wird im Dokument Offline-Zugriff veraltet behandelt

Verwenden Sie das 60-Tage-Token für den Seitenadministrator, um ein Seitenzugriffstoken abzurufen (über /PAGE_ID?fields=access_token oder /me/accounts) - Das Seitenzugriffstoken hat keine Ablaufzeit

15
Igy

Vielen Dank an @redhotvengeance für die schrittweise Anleitung.

Nach einiger Zeit ist nun in der Facebook-Dokumentation klar beschrieben:

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

Erweitern von Seitenzugriffstoken

Apps können ein Seitenzugriffstoken von Seitenadministratorbenutzern abrufen, wenn sie sich mit der Berechtigung manage_pages authentifizieren. Wenn das Benutzerzugriffstoken, mit dem dieses Seitenzugriffstoken abgerufen wird, nur von kurzer Dauer ist, ist das Seitenzugriffstoken auch von kurzer Dauer.

Um ein längerlebiges Seitenzugriffstoken zu erhalten, tauschen Sie das Benutzerzugriffstoken wie oben beschrieben gegen ein langlebiges Token aus und fordern Sie dann das Seitenzugriffstoken an. Das resultierende Seitenzugriffstoken hat keine Ablaufzeit.

1
Athlan

Sie können auch über das App-Dashboard auf Facebook kopieren und einfügen. Die Schritte:

  1. Gehen Sie zu https://developers.facebook.com

  2. Wählen Sie Ihre App in der rechten oberen Ecke der Seite aus (Bild von dem, wie es aussieht)

  3. Klicken Sie in den Optionen auf der linken Seite auf Messenger (es wird automatisch eingestellt) (Bild, wie es aussieht
  4. Gehen Sie zum Abschnitt "Token-Generierung" auf der Seite. Wählen Sie die Seite aus, für die Sie das Token generieren möchten. (Bild davon, wie dieser Abschnitt aussieht
  5. Kopieren Sie Ihr Seitentoken und fügen Sie es dort ein, wo Sie es benötigen.

Beachten Sie, dass Ihr Token zwar theoretisch nicht abläuft, jedoch direkt mit dem Facebook-Konto verknüpft ist, in 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.

0
Heidi