Langlebige Zugriffsschlüssel

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

Langlebigen Nutzer-Zugriffsschlüssel abrufen

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:

  • Einen gültigen Nutzer-Zugriffsschlüssel
  • Deine App-ID
  • Deinen App-Geheimcode

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}" 

Beispielantwort

{
  "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.

Warnungen

  • 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.

Langlebigen Seiten-Zugriffsschlüssel abrufen

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}"

Beispielantwort

{
  "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"
    }
  }
}

Langlebige Schlüssel für Clients abrufen

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:

  • Sie verfügen über ein eigenes Authentifizierungssystem (unter Verwendung eines Nutzernamens/Passworts beispielsweise).
  • Sie speichern auf ihren Servern einen Facebook-Zugriffsschlüssel für Personen, die verschiedene Clients verwenden (Browser-Apps oder native mobile Apps).
  • Sie führen von all diesen verschiedenen Clients API-Aufrufe durch.

Auf höherer Ebene kannst du einen langlebigen Schlüssel für den Client wie folgt abrufen:

  1. Mit einem gültigen langlebigen Zugriffsschlüssel sendet dein Server eine Anfrage, um einen Code von Facebook abzurufen.
  2. Facebook sendet einen Code zurück an deinen Server und sendet diesen Code auf sichere Weise an den Client.
  3. Der Client verwendet diesen Code, um einen langlebigen Schlüssel von Facebook abzurufen.
  4. Facebook sendet dem Client einen langlebigen Schlüssel zum Posten von Stories oder Abfragen von Daten.

Code 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}" 

Beispielantwort

{
  "code":"{code-for-your-client}"
}

Code für einen langlebigen Zugriffsschlüssel einlösen

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.

Beispielantwort

{
  "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: