Los tokens de acceso a la página y de acceso de usuario predeterminados son de corta duración; sin embargo, puede cambiar un token de corta duración por un token de larga duración.
Al utilizar iOS, Android o SDK para JavaScript, el SDK actualiza automáticamente los tokens si la persona ha usado tu app en los últimos 90 días. Las apps para celulares nativas que usan los SDK de Facebook obtienen tokens de acceso de usuario de larga duración, válidos por unos 60 días. Estos tokens se actualizan una vez al día cuando la persona que usa la app realiza una solicitud a los servidores de Facebook. Si no se realiza ninguna solicitud, el token caduca después de 60 días aproximadamente y la persona debe volver a realizar el proceso de inicio de sesión para obtener uno nuevo.
La versión más reciente de la API Graph: v21.0
Si necesitas un token de acceso de usuario de larga duración, puedes generar uno a partir de un token de acceso de usuario de corta duración. Estos tokens suelen tener una vigencia de unos 60 días.
Necesitarás lo siguiente:
Consulta el punto de conexión 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 token de acceso de usuario de larga duración es el siguiente:
Una vez que hayas recuperado el token de larga duración, podrás usarlo desde tu servidor o enviarlo al cliente para que lo use.
No puedes usar un token caducado para solicitar un token de larga duración. Si el token ha caducado, la app debe someter otra vez al usuario al proceso de inicio de sesión para volver a generar un nuevo token de acceso de usuario de corta duración.
Realiza la llamada desde tu servidor, no desde un cliente. Esta llamada a la API incluye la clave secreta de la app, así que nunca debes realizarla desde un cliente. Es preferible implementar código de servidor que realice la solicitud y después pasar la respuesta con el token de larga duración al código de cliente. Será una cadena distinta del token original, de modo que, si almacenas estos tokens, debes reemplazar el anterior.
No debes utilizar los mismos tokens de larga duración en más de un cliente web (p. ej., si el usuario inicia sesión desde más de una computadora). Es preferible utilizar los tokens de larga duración en tu servidor para generar un código y después utilizar este código para obtener un token de larga duración en el cliente. Consulta la siguiente información sobre cómo generar tokens de larga duración a partir de tokens de servidor de larga duración.
Si necesitas un token de acceso a la página de larga duración, puedes generar uno a partir de un token de acceso de usuario de corta duración. El token de acceso a la página de larga duración no tendrá fecha de caducidad y solo caducará o dejará de ser válido en ciertas condiciones.
Necesitarás lo siguiente:
Consulta el punto de conexión 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 tokens de acceso de larga duración para apps para evitar que se activen los sistemas automatizados de spam de Facebook. Apps que:
A grandes rasgos, obtienes un token de larga duración para el cliente de la siguiente manera:
Consulta el punto de conexión GET oauth/client_code
. El URI de redireccionamiento debe coincidir exactamente con el de la configuración de tu panel de apps en la tarjeta Inicio de sesión con Facebook > Configuración de cliente > Configuración de OAuth.
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 que recuperes el código del servidor de Facebook, tendrás que enviárselo al cliente por un canal seguro. Después, tendrás que 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 machine_id
es un parámetro opcional que identifica a los clientes y les hace un seguimiento, y se usa por seguridad y prevención de spam. Es un valor por cliente, no por usuario. Si previamente hiciste llamadas para obtener un código y recibiste un valor machine_id
, debes incluirlo en tu 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 token de larga duración es el siguiente: