Standardmäßige Nutzer- und Seiten-Zugriffsschlüssel sind kurzlebig. Sie laufen innerhalb von Stunden ab. Du kannst jedoch einen kurzlebigen durch einen langlebigen Schlüssel ersetzen.
Wenn du das iOS-, Android- oder JavaScript-SDK verwendest, aktualisiert das SDK Schlüssel automatisch, wenn die Person deine App innerhalb der letzten 90 Tage genutzt hat. Native mobile Apps, die Facebook-SDKs verwenden, erhalten langlebige Nutzer-Zugriffsschlüssel, die rund 60 Tage lang gültig sind. Diese Schlüssel werden einmal täglich aktualisiert, wenn die Person, die deine App verwendet, eine entsprechende Anfrage an die Facebook-Server sendet. Wenn keine Anfragen getätigt werden, läuft der Schlüssel nach rund 60 Tagen ab und die Person muss den Login-Vorgang erneut durchlaufen, um einen neuen Schlüssel abzurufen.
Die aktuelle Graph API-Version: v21.0
Wenn du einen langlebigen Nutzer-Zugriffsschlüssel benötigst, kannst du diesen mit einem kurzlebigen Nutzer-Zugriffsschlüssel generieren. Ein langlebiger Schlüssel ist rund 60 Tage gültig.
Du benötigst Folgendes:
Frage den Endpunkt GET oauth/access_token
ab.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
Der Ablauf zum Generieren eines langlebigen Nutzer-Zugriffsschlüssels ist folgender:
Sobald du den langlebigen Schlüssel abgerufen hast, kannst du ihn auf deinem Server verwenden oder ihn zurück zum Client senden, um ihn dort zu nutzen.
Ein abgelaufener Schlüssel kann nicht zum Anfordern eines langlebigen Schlüssels verwendet werden. Ist der Schlüssel abgelaufen, muss deine App den Nutzer erneut durch den Login-Vorgang leiten, um einen neuen kurzlebigen Zugriffsschlüssel neu zu generieren.
Führe diesen Aufruf über deinen Server aus und nicht über einen Client. Der App-Geheimcode ist in diesem API-Aufruf enthalten, sodass du die Anfrage nie clientseitig durchführen solltest. Implementiere stattdessen serverseitigen Code, der die Anfrage durchführt, und leite die Antwort mit dem langlebigen Schlüssel dann zurück zum clientseitigen Code. Hierbei handelt es sich um einen anderen String als beim ursprünglichen Schlüssel – ersetze deshalb den alten Schlüssel, wenn du diese Schlüssel speicherst.
Verwende nicht dieselben langlebigen Schlüssel auf mehr als einem Web-Client (d. h., wenn die Person sich auf mehr als einem Computer anmeldet). Stattdessen solltest du mit den langlebigen Schlüsseln auf deinem Server einen Code generieren und diesen dann nutzen, um einen langlebigen Schlüssel auf dem Client zu erhalten. Nachfolgend erhältst du unter Generieren langlebiger Schlüssel über serverseitige langlebige Schlüssel weitere Informationen hierzu.
Wenn du einen langlebigen Seiten-Zugriffsschlüssel benötigst, kannst du diesen mit einem langlebigen Nutzer-Zugriffsschlüssel generieren. Langlebige Seiten-Zugriffsschlüssel haben kein Ablaufdatum. Sie können nur unter bestimmten Bedingungen ablaufen oder ungültig werden.
Du benötigst Folgendes:
Frage den Endpunkt GET {app-scoped-user-id}?accounts
ab.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook verfügt über eine Option zum Abrufen langlebiger Zugriffsschlüssel für Apps, damit die automatischen Spam-Systeme von Facebook nicht ausgelöst werden. Apps mit folgenden Merkmalen:
Auf höherer Ebene kannst du einen langlebigen Schlüssel für den Client wie folgt abrufen:
Frage den Endpunkt GET oauth/client_code
ab. Die Weiterleitungs-URI muss dem genauen Wert entsprechen, den du im App-Dashboard auf der Karte Facebook Login > Einstellungs-Client > OAuth-Einstellungen festlegst.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Wenn du den Code vom Facebook-Server abgerufen hast, sende ihn im Anschluss über einen sicheren Kanal an den Client. Danach musst du über den Client eine Anfrage an den Endpunkt /oauth/access_token
tätigen:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
Die machine_id
ist ein optionaler Parameter zur Identifizierung und Erfassung von Clients und wird aus Sicherheitsgründen und zur Spam-Prävention eingesetzt. Es handelt sich um einen Wert pro Client und nicht pro Nutzer*in. Wenn du zu einem früheren Zeitpunkt Aufrufe getätigt hast, um einen Code abzurufen, und du eine machine_id
erhalten hast, solltest du diese in deine Codeanfrage eingeben.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
Der Ablauf zum Generieren eines langlebigen Schlüssels ist folgender: