Tokens de acceso: Depurar y administrar errores

Obtener información sobre tokens y depuración

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.

Administración de errores

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.

Tokens de acceso no válidos o caducados

Respuesta de ejemplo de token caducado

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

Respuesta de ejemplo de token que ha dejado de ser válido

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.

Respuesta de ejemplo de error en la autorización de la app

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.

Respuesta de ejemplo de token desautorizado

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

Administración de errores de token en apps para iOS

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.

Administración de errores de token en apps para Android

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.

Más información

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.