Antes de comenzar
- Configura el SDK de Facebook Login - Instala y configura el SDK de Facebook Login para Android. Crea una aplicación de Facebook en developers.facebook.com. Al terminar, Facebook Login debería funcionar en tu aplicación.
- Configura Auth0 para Facebook Native - Configura tu aplicación de Auth0 para usar Facebook Native Sign In. Consulta Añadir Facebook Login a aplicaciones nativas.
Primeros pasos
Configurar permisos de Facebook Login
Actualiza el botón de Facebook Login en tu Activity para solicitar los permisos adecuados.Tu aplicación ya admite Facebook Login, pero para obtener un perfil de usuario más completo debes solicitar los permisos
public_profile y email. También agregarás un callback para iniciar el flujo de autenticación de Auth0.MainActivity.kt
El permiso
email es opcional; el usuario debe dar su consentimiento para compartirlo. El correo electrónico que devuelve Facebook se marcará como no verificado en el perfil de usuario de Auth0.Instala y configura el SDK de Auth0
Añade el SDK de Auth0 para Android a tu proyecto y configura las credenciales de la aplicación.Añade la dependencia a Sincroniza Gradle después de agregar la dependencia.Agrega tus credenciales de Auth0 a Inicializa el SDK de Auth0 en tu Activity:
app/build.gradle.kts:app/build.gradle.kts
strings.xml:Ve a la sección Applications del Auth0 Dashboard y selecciona la aplicación en la que habilitaste Facebook Native Sign In. Copia los valores de dominio e ID de cliente.app/src/main/res/values/strings.xml
MainActivity.kt
Si tu aplicación no usa Auth0 Web Authentication, elimina la actividad que no se usa de Si tienes previsto admitir Web Authentication, consulta Autenticación mediante Universal Login.
AndroidManifest.xml para evitar errores de Manifest Placeholder:app/src/main/AndroidManifest.xml
Obtener el token de acceso de la sesión de Facebook
Una vez que el Login de Facebook se complete correctamente, obtén un token de acceso de sesión de la API de Facebook. Auth0 requiere este token para verificar la identidad del usuario en el backend.Haz una solicitud GET al endpoint
/oauth/access_token de Facebook mediante la clase GraphRequest:MainActivity.kt
Los parámetros de consulta obligatorios son:
grant_type:fb_attenuate_tokenfb_exchange_token: el token de acceso de Facebook Loginclient_id: el ID de tu aplicación de Facebook (ya está en tu aplicación desde la configuración del SDK de Facebook)
Obtén el perfil de usuario de Facebook
Obtenga el perfil del usuario desde Facebook. Auth0 usa estos datos para crear o actualizar el perfil del usuario en Auth0.
MainActivity.kt
Intercambiar tokens por credenciales de Auth0
Usa el token de sesión y el perfil de usuario de los pasos anteriores para autenticarte con Auth0 y obtener tokens de Auth0.Llama a
loginWithNativeSocialToken en AuthenticationAPIClient y pasa el token de sesión con el tipo de token de sujeto de Facebook:MainActivity.kt
El tipo de token del sujeto
http://auth0.com/oauth/token-type/facebook-info-session-access-token indica a Auth0 que use la conexión nativa de Facebook para la autenticación.Punto de controlAhora ya deberías poder autenticarte de forma nativa con Facebook. Si la aplicación de Facebook está instalada en el dispositivo, la autenticación se realiza directamente a través de la aplicación, sin necesidad de usar un navegador.
Resolución de problemas y aspectos avanzados
Problemas comunes y soluciones
Problemas comunes y soluciones
El intercambio de tokens falla con un error de autenticación
Soluciones:- Verifique que su aplicación de Auth0 tenga Facebook Native Sign In habilitado en el Dashboard
- Compruebe que el Facebook App ID de su
strings.xmlcoincida con el de la Facebook Developer Console - Confirme que la cadena del tipo de token de sujeto coincida exactamente:
http://auth0.com/oauth/token-type/facebook-info-session-access-token - Asegúrese de que el token de acceso de Facebook no haya expirado antes de llamar a
performLogin
La solicitud del token de sesión devuelve un error
Solución:- Verifique que
R.string.facebook_app_idesté configurado correctamente en sustrings.xml - Asegúrese de que
fb_exchange_tokensea el valor bruto del token del objetoAccessTokende Facebook - Compruebe que su aplicación de Facebook no esté en modo de desarrollo si está realizando pruebas con usuarios que no sean administradores
AuthenticationException: “Connection not found”
Solución:- Vaya a Auth0 Dashboard → Authentication → Social
- Verifique que Sign in with Facebook esté habilitado
- Confirme que Facebook Native Social Login esté activado en la configuración de la conexión
- Compruebe que la aplicación de Auth0 esté asociada a la conexión de Facebook
Faltan campos del perfil de usuario
- Confirme que
public_profileyemailestén incluidos en la llamada asetPermissions - Es posible que el usuario haya rechazado el permiso
email; gestione correctamente un valor nulo en el correo electrónico - Verifique que los mismos campos estén en el bundle
fieldsdefetchUserProfile
Consideraciones para producción
Consideraciones para producción
Prácticas recomendadas de seguridad
- Desactive el registro en producción: Quite o limite
enableLogging = trueenDefaultClient; registra el tráfico de red - Almacenamiento seguro de tokens: Use
SecureCredentialsManagerpara almacenar los tokens de Auth0 en el Android Keystore - Tokens de actualización: Solicite el scope
offline_accesse implemente la renovación de tokens para mantener las sesiones
Configuración de la aplicación de Facebook
- Cambie su aplicación de Facebook de Development Mode a Live antes del lanzamiento
- Agregue la huella digital SHA-1 de su aplicación a la Facebook Developer Console
- Revise los requisitos de la Data Policy de Facebook para las aplicaciones que usan el Login SDK
Google Play Store
- Siga las políticas de Google Play para las aplicaciones que usan autenticación de terceros
- Incluya Facebook Login en la política de privacidad de su aplicación
Próximos pasos
Configurar otros proveedores de identidad
Agrega Google, Apple y otros proveedores de inicio de sesión social
Protección contra ataques
Protégete contra ataques de fuerza bruta y bots
Actions
Personaliza los flujos de autenticación con código sin servidor
Referencia del SDK para Android
Explora la documentación completa del SDK de Auth0 para Android