Identificadores de acceso de larga duración

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

Obtener un identificador de acceso de usuario de larga duración

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:

  • Identificador de acceso de usuario válido
  • Tu identificador de la aplicación
  • Tu clave secreta de la aplicación

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

Ejemplo de respuesta

{
  "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í.

Advertencias

  • 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.

Obtener un identificador de acceso a la página de larga duración

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

Ejemplo de respuesta

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

Obtener identificadores de larga duración para clientes

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:

  • Tienen su propio sistema de autenticación (mediante un nombre de usuario o una contraseña, por ejemplo).
  • Almacenan en sus servidores un identificador de acceso de Facebook para las personas que utilizan distintos clientes (aplicaciones de navegador o para móviles nativas).
  • Realizan llamadas a la API desde estos distintos clientes.

A grandes rasgos, estas son las formas de obtener un identificador de larga duración para el cliente:

  1. Al utilizar un identificador de acceso de larga duración válido, el servidor envía una solicitud para obtener un código de Facebook.
  2. Facebook devuelve un código al servidor y tú envías este código protegido al cliente.
  3. El cliente utiliza este código para solicitar un identificador de larga duración de Facebook.
  4. Facebook envía al cliente un identificador de larga duración que se utiliza para publicar historias o consultar datos.

Obtener un código

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

Ejemplo de respuesta

{
  "code":"{code-for-your-client}"
}

Canjear el código por un identificador de acceso de larga duración

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.

Ejemplo de respuesta

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