Tokens d’accès : Débogage et gestion des erreurs

Obtention d’informations sur les tokens et le débogage

Lorsque vous travaillez avec un token d’accès, vous pouvez avoir à vérifier quelles informations lui sont associées, telles que son utilisateur ou sa date d’expiration. Pour obtenir ces informations, vous pouvez utiliser notre outil de débogage ou le point de terminaison d’API.

Pour utiliser l’API, vous pouvez émettre une demande de l’API Graph :

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

Remplacez {input-token} par le token d’accès sur lequel vous souhaitez obtenir des informations et {access-token} par un token d’accès valide. Les tokens doivent provenir de la même app.

La réponse de l’appel d’API est un tableau JSON qui ressemble à ceci :

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

Pour les tokens d’accès longue durée, le champ issued_at est également renvoyé.

Gestion des erreurs

Facebook ne vous informe pas quand un token d’accès n’est plus valide. À moins que vous n’ayez envoyé l’heure d’expiration (expiry) avec le token d’accès, votre application ignore qu’un token d’accès n’est plus valide jusqu’à ce que vous envoyiez une demande à l’API.

En raison d’évènements liés à la sécurité, les tokens d’accès peuvent être invalidés avant la date d’expiration prévue.

Dans la plupart des applications, la meilleure façon de gérer les tokens expirés est de capturer les messages d’erreur produits par l’API. Pour chaque cas, l’API renvoie un message d’erreur, un code et un sous-code dans un corps JSON expliquant la nature de l’erreur. Pour plus d’informations sur les codes et les sous-codes, reportez-vous à la documentation de référence sur les codes d’erreur.

Tokens d’accès expirés ou non valides

Exemple de réponse de token expiré

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

Exemple de réponse de token non validé

Cette réponse est envoyée lorsqu’une personne se déconnecte de votre app ou change son mot de passe.

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

La personne devra se connecter à nouveau pour obtenir un token d’accès valide afin que vous puissiez passer des appels d’API en son nom. Le flux de connexion que votre app utilise pour les nouvelles personnes devrait déterminer quelle méthode vous devez adopter.

Exemple de réponse à une erreur d’autorisation d’app

Lorsqu’une personne a révoqué l’autorisation ou n’a jamais autorisé votre app, la réponse d’erreur est la même que pour une personne qui est nouvelle dans votre app.

Exemple de réponse de token révoqué

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

Gestion des erreurs de token dans les apps iOS

Les erreurs d’API dans le SDK iOS sont généralement détectées via les instances NSError transmises aux rappels. Pour en savoir plus, reportez-vous à la documentation sur les erreurs du SDK iOS.

Gestion des erreurs de token dans les apps Android

Les erreurs d’API dans l'Android SDK sont généralement détectées via l’objet Response transmis au rappel de Requests. En particulier, vous pouvez appeler response.getError() pour récupérer une instance FacebookRequestError.

En savoir plus

Vous pouvez en savoir plus avec notre guide de référence des erreurs d’API mais ces trois erreurs sont les plus courantes lorsqu’il s’agit de tokens d’accès.