Saltar al contenido principal
Puedes agregar funcionalidad a tu aplicación nativa para permitir que tus usuarios se autentiquen con Facebook de forma nativa, dentro de la propia aplicación. Esto no requiere redireccionamiento a través de un navegador web y permite que las aplicaciones móviles cumplan con la Política para desarrolladores de Facebook, que exige que las aplicaciones móviles usen el SDK de Facebook para Android o iOS para autenticarse.
Al integrar los SDK de Facebook, tus aplicaciones compartirán datos con Facebook. Asegúrate de comprender qué datos se comparten y de reflejarlo correctamente en la política de privacidad de tu aplicación. Auth0 no tiene control sobre qué datos se compartirán con Facebook a través del SDK.Consulta la página Facebook GDPR para obtener más información sobre los datos recopilados por el SDK de Facebook y Facebook Login.

Cómo funciona

El flujo de inicio de sesión nativo de Facebook funciona de la siguiente manera:
  • Paso 1: La aplicación autentica a un usuario mediante el SDK de Facebook y obtiene un .
  • Paso 2: La aplicación usa ese token de acceso para solicitar un token de acceso de información de sesión de Facebook especial.
  • Paso 3: Usa el SDK de Facebook para obtener el perfil del usuario.
  • Paso 4: A continuación, la aplicación puede usar el token de información de sesión de Facebook para autenticarse con Auth0.

Requisitos previos

Antes de configurar inicio de sesión nativo de Facebook para su aplicación nativa mediante Auth0, debe:
  1. Configurar Facebook como una conexión en Auth0
  2. Usar el SDK de Facebook correspondiente en su aplicación
  3. Vaya a Auth0 Dashboard > Applications > Applications y cree una aplicación en Auth0 (si todavía no lo ha hecho).
  4. En la parte inferior de la página de configuración, seleccione Show Advanced Settings y, a continuación, la vista Device Settings. En Native Social Login, active el interruptor Enable Sign In with Facebook.
    Configuración de Native Social Login

Implementación

Desde la perspectiva de tu aplicación, el proceso para autenticar un perfil de usuario mediante inicio de sesión nativo de Facebook consta de cuatro pasos:

Paso 1

La aplicación autentica a un usuario mediante el SDK de Facebook. Obtendrá un token de acceso de Facebook.

Paso 2

La aplicación usa el Token de acceso para solicitar un token de acceso de información de sesión de Facebook. Esta solicitud será similar a la siguiente:
GET https://graph.facebook.com/v5.0/oauth/access_token?grant_type=fb_attenuate_token&client_id=457704041391802&fb_exchange_token=<facebook_access_token>
y la respuesta:
{
    "access_token": "XAAGgR4b...1lHWNCpqrAhcpoAZDZD",
    "token_type": "bearer",
    "expires_in": 5183924
}

Paso 3

La aplicación debe recuperar el perfil del usuario desde Facebook mediante el SDK de Facebook, lo que dará como resultado una solicitud similar a la siguiente:
GET https://graph.facebook.com/v5.0/<facebook user id>?access_token=<facebook access token>&fields=email,name

Paso 4

A continuación, la aplicación puede usar el token de acceso de la información de sesión y el perfil de usuario de Facebook para autenticarse con Auth0 llamando al endpoint /oauth/token de Auth0 mediante el flujo de intercambio de tokens con el tipo de token facebook-session-access-token. Si todo sale bien, Auth0 devolverá una respuesta normal del intercambio, con el perfil de usuario agregado. El perfil de usuario debe ser un objeto JSON codificado como una cadena. y la respuesta de Auth0:
{
    "access_token": "eyJ0eXA..yXQaPLVXg",
    "id_token": "eyJ0.tFE5HPipdOsA",
    "scope": "openid profile email read:appointments",
    "expires_in": 86400,
    "token_type": "Bearer"
}

Perfil del usuario y validación del correo electrónico

En el ejemplo anterior, tuviste que recuperar el perfil del usuario de Facebook e incluirlo en la llamada a /oauth/token. Esto se debe a que el token de acceso de la sesión de Facebook no puede usarse para recuperar directamente el perfil, y el token de acceso de Facebook no puede enviarse directamente al servidor debido a las Directrices de revisión de la App Store de Apple. Por lo tanto, debe recuperarse en el cliente y enviarse a Auth0 de esta manera. Dado que Auth0 no puede garantizar que el perfil del usuario sea el mismo que devolvió Facebook, establecerá el campo email_verified en false.

Cerrar sesión

Dado que la implementación de inicio de sesión nativa no utiliza flujos estándar basados en navegador, los propietarios de la aplicación también deben asegurarse de cerrar sesión correctamente. Cuando una aplicación necesite cerrar sesión, también debe revocar el Token de actualización de Auth0.

Sigue leyendo