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 acceso | Descripció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. | |
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. | |
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. | |
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. | |
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. |
Aunque cada plataforma genera identificadores de acceso mediante API distintas, todas siguen una estrategia básica para obtener un identificador de usuario:
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.
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:
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
.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); accessToken = AccessToken.getCurrentAccessToken(); }
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
.
- (void)viewDidLoad { [super viewDidLoad]; NSString *accessToken = [FBSDKAccessToken currentAccessToken]; }
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.
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.
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.
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.
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).
Para generar un identificador de acceso a la aplicación, necesitas:
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.
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.
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.
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:
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.
Utiliza la herramienta de identificadores de acceso para ver una lista de los identificadores de acceso y la información de depuración de cada identificador.