Al trabajar con un token de acceso, tendrías que verificar qué información tiene asociada, por ejemplo, el usuario o la caducidad. Para obtener esta información puedes utilizar nuestra herramienta de depuración o puedes utilizar el extremo de la API.
Para utilizar la API, puedes emitir una solicitud de API Graph:
curl -i -X GET "https://graph.facebook.com/debug_token? input_token={input-token}& access_token={valid-access-token}
Reemplaza {input-token}
por el token de acceso del que deseas obtener información y {access-token}
por un token de acceso válido. Los tokens deben ser de la misma app.
La respuesta de la llamada a la API es una matriz JSON que tiene este aspecto:
{ "data":{ "app_id":"{app-id}", "type":"USER", "application":"{app-name}", "data_access_expires_at":1576687825, "expires_at":1570820400, "is_valid":true, "scopes":[ "manage_pages", "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" } }
En los tokens de acceso de larga duración, también se devuelve el campo issued_at
.
Facebook no te notificará que un token de acceso ya no es válido. A menos que hayas enviado la fecha expiry
a tu app junto con el token de acceso, tu app solo sabrá que cierto token ya no es válido cuando intentes enviar una solicitud a la API.
Debido a eventos relacionados con la seguridad, los tokens de acceso pueden dejar de ser válidos antes de la fecha de caducidad esperada.
En la mayoría de las apps, la mejor manera de administrar los tokens que han caducado es capturar los mensajes de error que muestra la API. En cada caso, la API mostrará un mensaje de error, un código y un subcódigo en un cuerpo JSON en donde explica la naturaleza del error. Para obtener más información sobre códigos y subcódigos, consulta el documento de referencia de códigos de error.
{ "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 respuesta se envía cuando una persona cierra la sesión de la app o cambia la contraseña.
{ "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 persona tendrá que iniciar sesión nuevamente para obtener un token de acceso válido para poder realizar llamadas a la API en su nombre. El proceso de inicio de sesión que usa tu app para personas nuevas debe determinar qué método tienes que adoptar.
Cuando alguien ha revocado la autorización o nunca autorizó la app, la respuesta de error será la misma que para una persona nueva en la 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" } } }
Los errores de API en el SDK para iOS normalmente aparecen en las instancias de NSError
que pasan a las llamadas. Para obtener más detalles, consulta la documentación de errores en el SDK para iOS.
Los errores de API en el SDK para Android normalmente aparecen en el objeto de Response
que pasa a la llamada de Requests
. Específicamente, puedes llamar a response.getError()
para recuperar una instancia de FacebookRequestError
.
Puedes leer sobre más errores en nuestra referencia de errores de la API, pero estos tres errores son los más comunes al tratar con tokens de acceso.