Ao trabalhar com um token de acesso, talvez você precise verificar quais informações estão associadas a ele, como o usuário ou a validade. Para obter essas informações, use nossa ferramenta de depuração ou o ponto de extremidade da API.
Para usar a API, emita uma solicitação da Graph API:
curl -i -X GET "https://graph.facebook.com/debug_token? input_token={input-token}& access_token={valid-access-token}
Substitua {input-token}
pelo token de acesso sobre o qual você quer obter informações e {access-token}
por um token de acesso válido. Os tokens devem ser do mesmo aplicativo.
A resposta da chamada da API é uma matriz JSON semelhante a esta:
{ "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" } }
Para tokens de acesso de longa duração, o campo issued_at
também é retornado.
O Facebook não notificará que um token de acesso se tornou inválido. A menos que você tenha enviado o tempo de expiry
para o aplicativo junto com o token de acesso, ele somente saberá que um determinado token se tornou inválido ao ser feita uma solicitação à API.
Devido a eventos relacionados à segurança, os tokens de acesso podem ser invalidados antes do tempo de expiração esperado.
Na maioria dos aplicativos, a melhor maneira de lidar com tokens expirados é capturar as mensagens de erro geradas pela API. Em cada caso, a API retornará uma mensagem de erro, um código e um subcódigo em um corpo JSON, explicando a natureza do erro. Para mais informações sobre códigos e subcódigos, consulte o documento de referência sobre códigos de erro.
{ "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" } }
Esta resposta é enviada quando uma pessoa sai do aplicativo ou altera a senha.
{ "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" } }
A pessoa precisará fazer login novamente para obter um token de acesso válido. Assim, você poderá fazer chamadas de API em nome dela. O fluxo de login que o aplicativo usa para novas pessoas determina o método que precisa ser usado.
Ao revogar uma autorização ou não autorizar o aplicativo, a resposta a erro será semelhante à de uma pessoa nova no seu aplicativo.
{ "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" } } }
Os erros de API no SDK do iOS normalmente são detectados pelas instâncias de NSError
transmitidas aos retornos de chamada. Consulte a documentação sobre erros do SDK do iOS para obter mais detalhes.
Os erros de API no Android SDK normalmente são detectados pelo objeto Response
transmitido aos retornos de chamada das Requests
. Especificamente, você pode chamar response.getError()
para recuperar uma instância de FacebookRequestError
.
Leia sobre outros erros em nossa Referência de erros da API, mas esses três erros abordados são os mais comuns ao lidarmos com tokens de acesso.