Langlebiges FB-Zugriffstoken für den Server, um die FB-Seiteninformationen abzurufen

Ich bin mir bewusst, dass es viele Fragen über Facebook Access-Tokens und die damit verbundenen Kummer gibt, aber trotz vieler Experimente und dem Lesen vieler frustrierend vager Blogartikel (FB und andere), kämpfe ich immer noch um eine klare Antwort auf meine Bedürfnisse . Lasst mich meinen bisherigen process lapidar zusammenfassen:

  • Ich erstelle eine Site, die serverseitig die Posts / 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 daraus meinen kurzlebigen Schlüssel in einen langlebigen Schlüssel (60 Tage) umgewandelt

Und hier bin ich festgefahren. Mein 60-Tage-Schlüssel funktioniert einwandfrei, damit mein Server die benötigten Informationen von der Seite abrufen kann. Soweit ich feststellen kann, gibt es keine Möglichkeit, diesen 60-Tage-Schlüssel programmatisch 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 Anfragen an die Facebook-API und nicht an ein Benutzer-basiertes System richtet (wo ich leicht einen Benutzer auffordern könnte, die Facebook-App erneut zu autorisieren), erzeugt dies ein sehr klobiges System. Seit Facebook offline_access , gibt es wirklich keine dauerhafte Möglichkeit, dass mein Server Informationen von meiner eigenen Seite offline_access kann? Muss ich wirklich einen neuen Schlüssel manuell erstellen und manuell meinen Server damit alle 60 Tage aktualisieren?

Oder gibt es etwas, das ich vermisse?

Aktualisieren:

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

   

    Dies sind die Schritte, die zuvor in der Frage waren – sie wurden zu dieser Antwort migriert.

    Nachdem festgestellt wurde, dass es möglich ist, ein Facebook-Seitenzugriffstoken zu generieren, das nicht abläuft (mit Hilfe von @Igy), folgt hier eine klare Schritt-für-Schritt-Anleitung für alle, die auf dasselbe achten:

    1. Stelle sicher, dass du der Administrator der FB-Seite bist, von der du Informationen abrufen möchtest
    2. Erstellen Sie eine FB-App (sollte mit demselben Benutzerkonto wie der Seitenadministrator sein)
    3. Gehen Sie zum Facebook Graph API Explorer
    4. Wählen Sie oben rechts in der Dropdown-Liste “Anwendung” die erstellte FB-App aus
    5. Klicken Sie auf “Get Access Token”
    6. manage_pages Sie sicher, dass Sie die manage_pages hinzufügen
    7. Konvertieren Sie dieses kurzlebige Zugriffstoken in einen langlebigen, indem Sie diesen Graph-API-Aufruf https://graph.facebook.com/oauth/access_token?client_id=&client_secret=&grant_type=fb_exchange_token&fb_exchange_token= : https://graph.facebook.com/oauth/access_token?client_id=&client_secret=&grant_type=fb_exchange_token&fb_exchange_token=
    8. Ergreifen Sie das neue langlebige Zugriffstoken, das zurückgegeben wird
    9. Machen Sie einen Graph-API-Aufruf, um Ihre Konten mit dem neuen langlebigen Zugriffstoken zu sehen: https://graph.facebook.com/me/accounts?access_token=
    10. access_token Sie sich das access_token für die Seite, von der Sie Informationen access_token
    11. Füge das Token hinzu, um zu sehen, dass es auf Expires: Never !

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

    • Sie ändern Ihr Facebook-Konto-Passwort
    • Sie verlieren den Administratorzugriff für die Zielseite
    • Du löschst oder deaktivierst deine Facebook App

    Jede dieser Ursachen führt dazu, dass das Zugriffstoken ungültig wird.

    Wenn Sie versuchen (#100) Tried accessing nonexisting field (accounts) on node type (Page) , gehen Sie zum Access Token Debugger , kopieren Sie den Wert der User ID und ersetzen Sie damit den “me” -Teil der URL Schritt 9.

    Dies wird im Offline-Ablehnungsdokument behandelt

    Verwenden Sie das 60-Tage-Token, damit der /PAGE_ID?fields=access_token (über /PAGE_ID?fields=access_token oder /me/accounts ) – das /PAGE_ID?fields=access_token

    Vielen Dank an @redhotvengeance für die Schritt-für-Schritt-Anleitung.

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

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

    Erweitern der Seitenzugriffstoken

    Apps können ein Seitenzugriffstoken von Seitenadministratoren abrufen, wenn sie sich mit der Berechtigung manage_pages authentifizieren. Wenn das Benutzerzugriffstoken, das zum Abrufen dieses Seitenzugriffstokens verwendet wird, von kurzer Dauer ist, ist das Seitenzugriffstoken auch von kurzer Dauer.

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

    Sie können auch kopieren und aus dem App-Dashboard auf Facebook. Die Schritte:

    1. Gehe zu https://developers.facebook.com

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

    3. Klicken Sie auf Messenger in den Optionen auf der linken Seite (es wird automatisch zur Einstellung) (Bild von dem, wie es aussieht)
    4. Gehe zum Abschnitt “Token-Generation” auf der Seite. Wählen Sie die Seite aus, für die Sie das Token generieren möchten. (Bild von wie dieser Abschnitt aussieht)
    5. Das Kopieren und Übergeben Ihres Seiten-Tokens, wo immer Sie es brauchen.

    Denken Sie daran, dass Ihr Token theoretisch nicht abläuft, dass er direkt mit dem Facebook-Account verknüpft ist, auf dem Sie sich angemeldet haben. Wenn Sie beispielsweise Ihr Passwort ändern oder die Berechtigungen zwischen Ihrem Konto und Ihrer App entfernen, ist Ihr Token nicht mehr gültig.