Identificadores de acceso: depuración y gestión de errores

Obtener información sobre los identificadores y la depuración

Cuando se trabaja con un identificador de acceso, es posible que se deba comprobar la información asociada con él, como el usuario o la caducidad. Para obtener esta información, puedes utilizar la herramienta de depuración o bien el extremo de la API.

Para utilizar la API, puedes realizar la siguiente solicitud a la 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 identificador de acceso sobre el que quieres obtener información, y {access-token} por un identificador de acceso válido. Los identificadores deben provenir de la misma aplicación.

La respuesta de la llamada a la API es una matriz JSON que tiene el siguiente aspecto:

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

También se devuelve el campo issued_at para los identificadores de acceso de larga duración.

Gestionar los errores

Facebook no te enviará una notificación cuando un identificador de acceso deje de ser válido. A menos que hayas enviado el periodo de expiry a la aplicación junto con el identificador de acceso, es posible que la aplicación solo reconozca que un identificador concreto ya no es válido cuando intentes realizar una solicitud a la API.

Debido a algunos eventos relacionados con la seguridad, los identificadores de acceso pueden invalidarse antes del periodo de caducidad esperado.

En la mayoría de las aplicaciones, la mejor forma de gestionar los identificadores caducados consiste en capturar los mensajes de error que genera la API. En cada caso, la API devolverá un mensaje de error, un código y un subcódigo en un cuerpo JSON que explica la naturaleza del error. Para obtener más información sobre los códigos y subcódigos, consulta el documento de referencia sobre códigos de error.

Identificadores de acceso no válidos o caducados

Ejemplo de respuesta de un identificador 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"
  }
}

Ejemplo de respuesta de un identificador no válido

Esta respuesta se envía cuando se cierra la sesión de una persona en la aplicación o cuando se cambia su 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 debe volver a iniciar sesión para obtener un identificador de acceso válido. De este modo, podrás realizar llamadas a la API en su nombre. El proceso de inicio de sesión que la aplicación utiliza para las personas nuevas debe determinar el método que necesitas adoptar.

Ejemplo de respuesta de un error de autorización de la aplicación

Cuando alguien revoca la autorización de tu aplicación o nunca la ha autorizado, la respuesta de error es la misma que se le muestra a una persona nueva en la aplicación.

Ejemplo de respuesta de un identificador sin autorización

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

Gestionar errores de identificador en aplicaciones para iOS

Los errores de la API en el SDK para iOS, normalmente, se muestran mediante instancias de NSError que se pasan a las devoluciones de llamada. Consulta la documentación de errores del SDK para iOS para obtener más detalles.

Gestionar errores de identificador en aplicaciones para Android

Los errores de la API en Android SDK, normalmente, se muestran mediante objetos Response que se pasan a la devolución de llamada de Requests. En concreto, puedes llamar al método response.getError() para recuperar una instancia de FacebookRequestError.

Más información

Puedes obtener información sobre otros errores en la referencia sobre errores de la API, aunque los tres que se mencionan aquí son los más comunes cuando se trabaja con identificadores de acceso.