Zugriffsschlüssel: Debugging und Fehlerbehandlung

Abrufen von Informationen über Zugriffsschlüssel und Debugging

Bei der Arbeit mit einem Zugriffsschlüssel musst du möglicherweise überprüfen, welche Informationen mit ihm verknüpft sind, beispielsweise der Nutzer oder das Ablaufdatum. Diese Informationen kannst du mit unserer Fehlerfunktion oder dem API-Endpunkt abrufen.

Wenn du die API verwenden möchtest, kann du eine Graph API-Anfrage ausgeben:

curl -i -X GET "https://graph.facebook.com/debug_token?
  input_token={input-token}&
  access_token={valid-access-token}

Ersetze {input-token} durch den Zugriffsschlüssel, zu dem du Informationen abrufen möchtest, und {access-token} durch einen gültigen Zugriffsschlüssel. Die Schlüssel müssen aus derselben App stammen.

Der API-Aufruf gibt ein JSON-Array ähnlich dem folgenden zurück:

{ "data":{ "app_id":"{app-id}", "type":"USER", "application":"{app-name}", "data_access_expires_at":1576687825, "expires_at":1570820400, "is_valid":true, "scopes":[ "pages_show_list", "public_profile" ], "granular_scopes":[ { "scope":"pages_show_list", "target_ids":[ "{page-1-app-can-access-id}", "{page-2-app-can-access-id}" ] } ], "user_id":"10215241773831025" } } 

Für langlebige Zugriffsschlüssel wird auch das Feld issued_at zurückgegeben.

Behandeln von Fehlern

Du erhältst von Facebook eine Benachrichtigung, dass ein Zugriffsschlüssel ungültig geworden ist. Sofern du nicht die expiry-Zeit zusammen mit dem Zugriffsschlüssel an deine App gesendet hast, erfährt die App erst dann, dass ein bestimmter Schlüssel ungültig geworden ist, wenn du versuchst, eine Anfrage an die API zu senden.

Aufgrund sicherheitsrelevanter Events können Zugriffsschlüssel schon vor der erwarteten Ablaufzeit ungültig werden.

In den meisten Apps werden abgelaufene Zugriffsschlüssel am besten behandelt, indem die von der API ausgegebenen Fehlermeldungen aufgenommen werden. In jedem Fall gibt die API eine Fehlermeldung, einen Code und einen Untercode in einem JSON-Body zurück, der die Art des Fehlers erklärt. Weitere Informationen zu Codes und Untercodes findest du in der Referenzdokumentation zu Fehlercodes.

Abgelaufene oder ungültige Zugriffsschlüssel

Beispielantwort bei abgelaufenem Zugriffsschlüssel

{
  "error": {
    "message": "Error validating access token: Session has expired on Wednesday, 14-Feb-18 18:00:00 PST. The current time is Thursday, 15-Feb-18 13:46:35 PST.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

Beispielantwort bei ungültigem Zugriffsschlüssel

Diese Antwort wird gesendet, wenn sich eine Person von deiner App abgemeldet oder ihr Passwort geändert hat.

{
  "error": {
    "message": "Error validating access token: The session is invalid 
                because the user logged out.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 460,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

Die Person muss sich erneut anmelden, um einen gültigen Zugriffsschlüssel abzurufen, damit du API-Aufrufe in ihrem Namen durchführen kannst. Der Anmeldevorgang, den deine App für neue Nutzer verwendet, sollte die erforderliche Methode bestimmen.

Beispielantwort bei App-Autorisierungsfehler

Wenn jemand die Autorisierung für deine App widerrufen oder diese nie autorisiert hat, wird die gleiche Fehlerantwort zurückgegeben wie für einen neuen Nutzer deiner App.

Beispielantwort bei Widerruf der Zugriffsschlüssel-Autorisierung

{
  "error": {
    "message": "Error validating access token: User {user-id} has 
                not authorized application {your-app-id}.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 458,
    "fbtrace_id": "H2il2t5bn4e"
  }
}
}

Behandeln von Zugriffsschlüsselfehlern in iOS-Apps

API-Fehler im iOS-SDK werden normalerweise über die NSError-Instanzen angezeigt, die an die Rückrufe übergeben werden. Weitere Informationen findest du in der Fehlerdokumentation zum iOS-SDK.

Behandeln von Zugriffsschlüsselfehlern in Android-Apps

API-Fehler im Android SDK werden normalerweise über das Response-Objekt angezeigt, das an den Rückruf von Requests übergeben wird. Insbesondere kannst du response.getError() aufrufen, um eine FacebookRequestError-Instanz abzurufen.

Mehr dazu

Unsere API-Fehlerreferenz enthält Informationen zu weiteren Fehlern, diese drei Fehler treten jedoch im Zusammenhang mit Zugriffsschlüsseln am häufigsten auf.