Identificadores de acceso para tecnologías de Meta

Un identificador de acceso es una cadena opaca que identifica a un usuario, una aplicación o una página, y que la aplicación puede utilizar para realizar llamadas a la API Graph. El identificador incluye información acerca de la caducidad del identificador y la aplicación que lo ha generado. Debido a comprobaciones de privacidad, la mayoría de las llamadas a la API en las aplicaciones de Meta deben incluir un identificador de acceso. Existen diferentes tipos de identificadores de acceso en función de los distintos casos de uso y una serie de métodos para obtener un identificador de acceso.

Tipo de identificador de accesoDescripción

Identificador de acceso a la aplicación

Un identificador de acceso a la aplicación se utiliza para leer y modificar la configuración de la aplicación, y se genera mediante una clave secreta de la aplicación de Meta. Se utiliza durante las llamadas que modifiquen configuraciones para toda la aplicación. El identificador de acceso a la aplicación se obtiene mediante una llamada de servidor a servidor.

Identificador de cliente

Un identificador de cliente se utiliza para acceder a las API de la aplicación y puedes insertarlo en tus aplicaciones nativas o para ordenadores a fin de identificar tu aplicación. No está pensado como identificador secreto porque está insertado en las aplicaciones. El identificador de cliente se encuentra en el panel de aplicaciones de Meta.

Identificador de acceso a la página

Un identificador de acceso a la página se utiliza para leer, escribir y modificar los datos pertenecientes a una página de Facebook. Para conseguir un identificador de acceso a la página, primero debes obtener un identificador de acceso de usuario y utilizarlo para solicitar el identificador de acceso a la página mediante la API Graph.

Identificador de acceso de usuario del sistema

Un identificador de acceso de usuario del sistema se utiliza si la aplicación realiza acciones automatizadas mediante programación en las páginas o los objetos publicitarios de tus clientes empresariales sin tener que depender de que un usuario de la aplicación introduzca información o sin que sea necesario volver a autenticarse en el futuro.

Identificador de acceso de usuario

Un identificador de acceso de usuario se utiliza si la aplicación realiza acciones en tiempo real en función de las entradas del usuario. Este tipo de identificador de acceso es necesario cada vez que la aplicación llama a una API para que lea, modifique o escriba los datos de Facebook de una persona concreta en nombre de esta. Un identificador de acceso de usuario suele obtenerse mediante un cuadro de diálogo de inicio de sesión y requiere que la persona conceda permiso a la aplicación para obtenerlo.

Identificadores de acceso de usuario

Aunque cada plataforma genera identificadores de acceso mediante API distintas, todas siguen una estrategia básica para obtener un identificador de usuario:

Identificadores de corta y larga duración

Existen dos modalidades de identificadores de acceso de usuario: de corta y de larga duración. Los identificadores de corta duración suelen tener una vida de una o dos horas, mientras que los de larga duración pueden alcanzar los 60 días. No debes depender de que estas duraciones se mantengan sin cambios, ya que la duración de un identificador puede cambiar sin previo aviso o caducar antes de lo esperado. Obtén más información en Gestión de errores.

Los identificadores de acceso que se generan a través del inicio de sesión web son identificadores de corta duración, pero puedes convertirlos en identificadores de larga duración mediante una llamada a la API del servidor junto con el secreto de tu aplicación.

Las aplicaciones para móviles que utilizan los SDK de Facebook para iOS y Android obtienen identificadores de larga duración de forma predeterminada.

Las aplicaciones con acceso estándar a la API de marketing de Facebook al utilizar identificadores de larga duración recibirán identificadores de larga duración sin fecha de caducidad. Estos identificadores están sujetos a invalidación por otros motivos, pero no caducan en función del tiempo transcurrido. Esto también sucede con los identificadores de acceso de los usuarios del sistema de Business Manager.

Los identificadores son portables

Un aspecto importante acerca de los identificadores de acceso es que la mayoría son portables. No obstante, Apple no permite trasladar los identificadores a los servidores. De lo contrario, una vez que tienes un identificador de acceso, puedes utilizarlo para realizar llamadas desde un cliente de telefonía móvil o un navegador web, o desde tu servidor a los servidores de Facebook. Si obtienes un identificador en un cliente, puedes enviarlo a tu servidor y utilizarlo para realizar llamadas de servidor a servidor. Si lo obtienes mediante una llamada de un servidor, también puedes enviarlo a un cliente y realizar llamadas desde él.

El transporte de identificadores entre el cliente y el servidor debe realizarse de forma segura, mediante HTTPS, para garantizar la seguridad de las cuentas de las personas. Obtén más información sobre las implicaciones de trasladar identificadores entre los clientes y el servidor.

Cada plataforma tiene sus métodos para poner en marcha este proceso e incluye funciones para administrar los identificadores de acceso en nombre del desarrollador y la persona que concede los permisos:

Android

Los SDK de Facebook para Android administran automáticamente los identificadores de acceso de usuario a través de la clase com.facebook.AccessToken. Para obtener más información sobre cómo obtener un identificador de acceso de usuario, puedes implementar el inicio de sesión con Facebook para Android. Para recuperar el identificador de acceso de usuario, puedes inspeccionar Session.getCurrentAccessToken.

Código de ejemplo

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

Los SDK de Facebook para iOS administran automáticamente los identificadores de acceso de usuario a través de la clase FBSDKAccessToken. Para obtener más información sobre cómo obtener un identificador de acceso de usuario, puedes implementar el inicio de sesión con Facebook para iOS. Para recuperar el identificador de acceso de usuario, puedes inspeccionar FBSDKAccessToken.currentAccessToken.

Código de ejemplo

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

JavaScript

El SDK de Facebook para JavaScript obtiene y conserva los identificadores de acceso de usuario automáticamente en las cookies del navegador. Para recuperar el identificador de acceso de usuario, puedes realizar una llamada a FB.getAuthResponse, que incluirá una propiedad accessToken en la respuesta.

Código de ejemplo

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

Consulta la documentación de los SDK web de Facebook para obtener un ejemplo de código completo.

Web (sin JavaScript)

Si creas una aplicación web sin el SDK de Facebook para JavaScript, deberás generar un identificador de acceso durante los pasos que se describen en el documento.

Identificadores de acceso a la aplicación

Los identificadores de acceso a la aplicación se utilizan para realizar solicitudes a las API de Facebook en nombre de una aplicación, no de un usuario. Pueden utilizarse para modificar los parámetros de la aplicación, crear y administrar usuarios de prueba, o leer las estadísticas de la aplicación.

Limitaciones

Algunos datos de usuario que normalmente serían visibles para una aplicación que realiza una solicitud con un identificador de acceso de usuario no siempre lo son con un identificador de acceso a la aplicación. Si lees datos de usuario y los utilizas en tu aplicación, debes utilizar un identificador de acceso de usuario, en lugar de uno de acceso a la aplicación.

Los identificadores de acceso a la página se consideran inseguros si la aplicación está establecida en Native/Desktop en la configuración avanzada del panel de aplicaciones y, por lo tanto, no funcionarán con las llamadas a la API. Esto se debe a que suponemos que las aplicaciones nativas o para ordenadores incluyen la clave secreta en su código (por lo que el identificador de acceso a la aplicación generado con dicha clave secreta no es seguro).

Generación de un identificador de acceso a la aplicación

Para generar un identificador de acceso a la aplicación, necesitas:

Código de ejemplo

curl -X GET "https://graph.facebook.com/oauth/access_token
  ?client_id={your-app-id}
  &client_secret={your-app-secret}
  &grant_type=client_credentials"

Esta llamada devuelve un identificador de acceso a la aplicación que puede utilizarse en lugar de un identificador de acceso de usuario para realizar llamadas a la API, como se ha indicado antes. De nuevo, con fines de seguridad, el identificador de acceso a la aplicación nunca debe estar codificado de forma rígida en el código del cliente, ya que ello proporcionará a cualquier persona que cargue tu página web o descompile tu aplicación acceso completo al secreto de la aplicación y le permitirá modificarla. Esto implica que, la mayor parte del tiempo, utilizas los identificadores de acceso a la aplicación solo en llamadas de servidor a servidor.

Ten en cuenta que, dado que esta solicitud utiliza el secreto de tu aplicación, nunca debe realizarse en código del cliente ni en código binario de una aplicación que pueda descompilarse. Es importante que el secreto de la aplicación nunca se comparta con nadie. Por tanto, esta llamada a la API solo debe realizarse empleando código de servidor.

Existe otro método para realizar llamadas a la API Graph que no requiere el uso de un identificador de acceso a la aplicación generado. Solo puedes pasar el identificador de la aplicación y el secreto de la aplicación como el parámetro access_token al realizar una llamada:

curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}"   

La elección entre un identificador de acceso generado o este método depende de dónde ocultes la clave secreta de la aplicación.

Identificadores de acceso a la página

Los identificadores de acceso a la página se utilizan en llamadas a la API Graph para administrar páginas de Facebook. Para generar un identificador de acceso a la página, un administrador de la página debe conceder a la aplicación el permiso o permisos de página necesarios. Una vez concedidos, podrás recuperar el identificador de acceso a la página mediante un identificador de acceso de usuario con los permisos necesarios.

Código de ejemplo

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}" 

Devuelve una lista de páginas en las que tienes un rol e información sobre cada página, como la categoría de página, los permisos específicos que tienes en cada página y el identificador de acceso a la página.

{
  "data": [
    {
      "access_token": "EAACEdE...",
      "category": "Brand",
      "category_list": [
        {
          "id": "1605186416478696",
          "name": "Brand"
        }
      ],
      "name": "Ash Cat Page",
      "id": "1353269864728879",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
    {
      "access_token": "EAACEdE...",
      "category": "Pet Groomer",
      "category_list": [
        {
          "id": "163003840417682",
          "name": "Pet Groomer"
        },
        {
          "id": "2632",
          "name": "Pet"
        }
      ],
      "name": "Unofficial: Tigger the Cat",
      "id": "1755847768034402",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    }
  ]
}

Con un identificador de acceso a la página, puedes realizar llamadas a la API en nombre de una página. Por ejemplo, podrías publicar una actualización de estado en una página (en vez de en la biografía del usuario), o leer los datos de estadísticas de la página.

Estos identificadores de acceso son únicos para cada página, administrador y aplicación.

Identificadores de acceso del cliente

A partir de la versión 13.0 del SDK para iOS y Android, cuyo lanzamiento está previsto para principios de 2022, se requerirá un identificador de acceso del cliente para todas las llamadas a la API Graph.

Al igual que los identificadores de la aplicación, los identificadores de acceso del cliente realizan solicitudes a la API Graph en nombre de las aplicaciones en lugar de los usuarios.

A diferencia de los demás identificadores de acceso, los identificadores de acceso del cliente no pueden usarse en solicitudes solos, sino que deben combinarse con el identificador de la aplicación. Para ello, anexa el identificador al final del identificador de la aplicación, separado por una barra vertical (|):

{app-id}|{client-token}

Por ejemplo:

access_token=1234|5678

Para obtener el identificador de acceso del cliente de una aplicación, debes hacer lo siguiente:

  1. Inicia sesión en tu cuenta de desarrollador.
  2. En la página Aplicaciones, selecciona una aplicación para abrir el panel correspondiente.
  3. En el Panel, dirígete a Configuración > Opciones avanzadas > Seguridad > Identificador de acceso del cliente.

Longitud del identificador de acceso

La longitud de todos los tipos de identificadores de acceso cambiará con el paso del tiempo a medida que Facebook realice cambios a los elementos que se almacenan en los identificadores y a cómo se codifican. Debes esperar que su tamaño aumentará y disminuirá con el tiempo. Utiliza un tipo de datos de longitud variable que no tenga un tamaño máximo específico para almacenar los identificadores de acceso.

Más información