Los identificador de acceso a la página y del usuario predeterminados tienen una duración breve: caducan en cuestión de horas. Sin embargo, puedes cambiar un identificador de corta duración por uno de larga duración.
Si utilizas el SDK para iOS, Android o JavaScript, este automatizará los identificadores automáticamente si la persona ha utilizado tu aplicación en los últimos 90 días. Las aplicaciones para móviles nativas que utilizan el SDK de Facebook obtienen identificadores de acceso de usuario de larga duración, que tienen una vigencia de unos 60 días. Estos identificadores se actualizan una vez al día cuando el usuario de la aplicación envía una solicitud a los servidores de Facebook. Si no se realiza ninguna solicitud, el identificador caduca pasados 60 días, aproximadamente, y el usuario debe repetir el proceso de inicio de sesión para obtener uno nuevo.
Última versión de API Graph: v21.0
Si necesitas un identificador de acceso de usuario de larga duración, puedes generar uno a partir de un identificador de acceso de usuario de corta duración. Estos identificadores suelen tener una vigencia de unos 60 días.
Necesitarás lo siguiente:
Realiza una consulta al extremo GET oauth/access_token
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
El flujo de trabajo para generar un identificador de acceso de usuario de larga duración es el siguiente:
Una vez recuperado el identificador de larga duración, puedes utilizarlo desde el servidor o devolverlo al cliente para emplearlo allí.
No puedes utilizar un identificador caducado para solicitar un identificador de larga duración. Si el identificador ha caducado, la aplicación debe someter otra vez al usuario al proceso de inicio de sesión para volver a generar un nuevo identificador de acceso de corta duración.
Realiza esta llamada desde tu servidor, no desde un cliente. Esta llamada a la API incluye la clave secreta de la aplicación, así que nunca deberías realizar la solicitud desde un cliente. Es preferible implementar el código en el servidor que realice la solicitud y, después, pasar la respuesta con el identificador de larga duración al código del cliente. Será una cadena distinta del identificador original, de modo que, si almacenas estos identificadores, debes sustituir el antiguo.
No utilices los mismos identificadores de larga duración en más de un cliente web (p. ej., si el usuario inicia sesión desde más de un ordenador). Es preferible utilizar los identificadores de larga duración en tu servidor para generar un código y, después, utilizarlo para obtener un identificador de larga duración en el cliente. Consulta la siguiente información sobre la generación de identificadores de larga duración a partir de identificadores de larga duración del servidor.
Si necesitas un identificador de acceso a la página de larga duración, puedes generar uno a partir de un identificador de acceso de usuario de larga duración. Los identificadores de acceso a la página de larga duración no tienen fecha de caducidad y solo caducan o se invalidan en determinadas circunstancias.
Necesitarás lo siguiente:
Realiza una consulta al extremo GET {app-scoped-user-id}?accounts
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook dispone de una opción para obtener identificadores de acceso de larga duración para aplicaciones para evitar disparar los sistemas de spam automatizados de Facebook. Aplicaciones que:
A grandes rasgos, estas son las formas de obtener un identificador de larga duración para el cliente:
Realiza una consulta al extremo GET oauth/client_code
. El URI de redireccionamiento debe ser el valor exacto que has establecido en la tarjeta Inicio de sesión con Facebook > Configuración > Configuración del cliente de OAuth del panel de aplicaciones.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Una vez hayas recuperado el código del servidor de Facebook, tienes que enviárselo al cliente por un canal seguro. Cuando se lo hayas enviado, debes realizar una solicitud desde el cliente al extremo /oauth/access_token
:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
El parámetro machine_id
es opcional, identifica a los clientes y realiza un seguimiento de ellos, y se usa con fines de seguridad y prevención de spam. Se trata de un valor por cliente y no por usuario. Si previamente has realizado llamadas para obtener un código y el sistema te ha proporcionado un valor de machine_id
, debes incluirlo en la solicitud de código.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
El flujo de trabajo para generar un identificador de larga duración es el siguiente: