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