Primeros pasos
Crea un proyecto nuevo de Flutter
Cree un nuevo proyecto de Flutter para esta guía de inicio rápido.En su terminal:
- Vaya al directorio de trabajo
- Ejecute:
flutter create auth0_flutter_sample - Acceda al proyecto:
cd auth0_flutter_sample - Ábralo en su IDE:
- VS Code:
code . - Android Studio:
open -a "Android Studio" .
- VS Code:
Instala el SDK de Auth0 para Flutter
Agrega el SDK de Auth0 para Flutter a tu proyecto con la CLI de Flutter.Esto añadirá
auth0_flutter a las dependencias de tu pubspec.yaml:pubspec.yaml
Configura tu aplicación de Auth0
A continuación, debes crear una nueva aplicación en tu inquilino de Auth0 y configurar las URL de callback.Allowed Logout URLs:Agrega al campo Allowed Logout URLs las mismas URL de la configuración de callback anterior.Allowed Web Origins (solo web):Si tu aplicación es para la plataforma web, agrega la URL de tu aplicación:
- Ve al Auth0 Dashboard
- Haz clic en Applications > Applications > Create Application
- En la ventana emergente, ingresa un nombre para tu aplicación, selecciona
Nativecomo tipo de aplicación (oSingle Page Applicationsi es solo para web) y haz clic en Create - Ve a la pestaña Settings en la página de detalles de la aplicación
- Anota los valores de Domain y Client ID; los necesitarás más adelante
- Android
- iOS
- macOS
- Web
Allowed Callback URLs son una medida de seguridad fundamental para garantizar que los usuarios regresen de forma segura a tu aplicación después de autenticarse. Sin una URL que coincida, el proceso de inicio de sesión fallará.Allowed Logout URLs son esenciales para ofrecer una experiencia de usuario fluida al cerrar sesión. Sin una URL que coincida, los usuarios no serán redirigidos de vuelta a tu aplicación después de cerrar sesión.Por ejemplo, si tu dominio de Auth0 es
example.us.auth0.com y el nombre del paquete de Android es com.example.myapp, tu URL de callback de Android sería: https://example.us.auth0.com/android/com.example.myapp/callbackConfigure su aplicación
Se requiere una configuración específica para cada plataforma para habilitar el flujo de autenticación. Sigue las instrucciones correspondientes a cada plataforma de destino.
- Android
- iOS
- macOS
- Web
Abre el archivo Reemplaza
android/app/build.gradle y agrega los siguientes marcadores de posición del manifiesto dentro de android > defaultConfig:android/app/build.gradle
{yourDomain} por tu dominio de Auth0 (por ejemplo, example.us.auth0.com).Esquema httpsPara usar el esquema https en tu URL de callback, configura Android app links para tu aplicación.Para la autenticación biométrica (opcional):Si planeas usar autenticación biométrica, actualiza MainActivity.kt para que extienda FlutterFragmentActivity:android/app/src/main/kotlin/.../MainActivity.kt
Implementa el inicio de sesión y el cierre de sesión
Universal Login es la forma más sencilla de configurar la autenticación en su aplicación. Recomendamos usarlo para obtener la mejor experiencia, la máxima seguridad y la gama más completa de funcionalidades.Implementar el inicio de sesión:Implementar el cierre de sesión:
- Móvil/macOS
- Web
Importe el SDK de Auth0 para Flutter y cree una instancia de
Auth0:lib/auth_service.dart
- Móvil/macOS
- Web
lib/auth_service.dart
iOS/macOS: El parámetro Web: Debe llamar a
useHTTPS: true habilita Universal Links en iOS 17.4+ y macOS 14.4+ para mejorar la seguridad.Android: si está usando un esquema personalizado, pase este esquema al método de inicio de sesión para que el SDK pueda enrutar correctamente a la página de inicio de sesión y de vuelta:lib/auth_service.dart
onLoad() cuando se inicie su aplicación. Esto procesa el callback de redirección de Auth0 y restaura la sesión del usuario si ya está autenticado.Mostrar la información del perfil del usuario
El perfil del usuario se obtiene automáticamente cuando el usuario inicia sesión. El objeto
Credentials contiene una propiedad user con toda la información del perfil del usuario, que se rellena al decodificar el token de ID.lib/profile_screen.dart
Ejecuta tu aplicación
Compila y ejecuta tu aplicación Flutter.En tu terminal:Flujo esperado:
- La aplicación se inicia con tu interfaz de inicio de sesión
- El usuario toca Log In → Se abre el navegador o una pestaña personalizada con Universal Login de Auth0
- El usuario completa la autenticación
- El navegador redirige de vuelta a tu aplicación
- El usuario ya está autenticado y las credenciales quedan almacenadas
Punto de verificaciónAhora deberías tener una experiencia de inicio de sesión con Auth0 totalmente funcional en tu aplicación Flutter. La aplicación utiliza autenticación segura basada en el navegador y almacena automáticamente las credenciales para mantener la sesión.
Solución de problemas y uso avanzado
Problemas comunes y soluciones
Problemas comunes y soluciones
La URL de callback no coincide
Síntoma: Error “redirect_uri_mismatch” o la autenticación falla sin mostrar ningún error.Soluciones:- Comprueba que Allowed Callback URLs en Auth0 Dashboard coincidan exactamente con la configuración de tu aplicación
- Verifica el esquema (
https://frente ahttp://) - Asegúrate de que el nombre del paquete (Android) o el identificador del paquete (iOS/macOS) sean correctos
- Comprueba si hay barras diagonales al final
Android: Chrome Custom Tab no se abre
Síntoma: No ocurre nada al llamar alogin().Solución:- Verifica que
manifestPlaceholdersesté configurado correctamente enbuild.gradle - Asegúrate de que el permiso de Internet esté en
AndroidManifest.xml: - Comprueba que Chrome u otro navegador esté instalado en el dispositivo
iOS: alerta “Open in App”
Síntoma: Aparece un cuadro de diálogo preguntando si quieres abrirlo en tu aplicación.Solución: Este comportamiento es el esperado conASWebAuthenticationSession. Para quitarlo:- Usa Universal Links (requiere iOS 17.4+ y una cuenta de pago de Apple Developer)
- O establece
useEphemeralSession: true(desactiva el SSO):
Web: el usuario cierra sesión al recargar la página
Síntoma: El usuario parece haber cerrado sesión después de recargar la página.Solución:- Asegúrate de llamar a
onLoad()durante la inicialización de la aplicación - Prueba a usar
localStoragecomo ubicación de caché: - Asegúrate de que tu dominio se haya añadido a Allowed Web Origins en Auth0 Dashboard
Web: error “Must run on a secure origin”
Síntoma: Error relacionado con el origen seguro en la consola del navegador.Solución: El SDK de Auth0 SPA requiere un contexto seguro. Usalocalhost (que se considera seguro) o implementa la aplicación en un dominio HTTPS.Autenticación cancelada por el usuario
Gestiona este caso correctamente en el control de errores:Gestión de credenciales
Gestión de credenciales
El SDK de Auth0 para Flutter incluye un Credentials Manager integrado que almacena de forma segura las credenciales del usuario. En las plataformas móviles, las credenciales se cifran y se almacenan en el almacenamiento seguro de la plataforma (Keychain en iOS/macOS y SharedPreferences cifrado en Android).
Comprobar si hay credenciales almacenadas
Antes de pedir al usuario que inicie sesión, comprueba si ya existen credenciales válidas:lib/auth_service.dart
Recuperar credenciales almacenadas
Recupera las credenciales para acceder a tokens o a la información del usuario. El Credentials Manager actualiza automáticamente los tokens caducados cuando es posible:lib/auth_service.dart
Manejo de errores
Manejo de errores
Integración avanzada de Flutter
Integración avanzada de Flutter
Seguridad reforzada de credenciales con biometría
Implementa autenticación biométrica para acceder a las credenciales en dispositivos móviles:lib/secure_auth_service.dart
Android: Requiere que
MainActivity extienda FlutterFragmentActivity, como se configuró en el paso 4.iOS/macOS: Requiere agregar NSFaceIDUsageDescription a tu Info.plist.Alcances personalizados y audiencia
Solicita alcances específicos y una audiencia para tu API:lib/auth_service.dart
Organizaciones (B2B/empresarial)
Autentica a los usuarios dentro de una organización específica:lib/auth_service.dart
Implementación en producción
Implementación en producción
Preparación para App Store
- Configura Universal Links (iOS) y App Links (Android) para una autenticación fluida
- Prueba la aplicación en varios tamaños de dispositivo y versiones del sistema operativo
- Implementa un manejo de errores adecuado para fallos de red
- Agrega reglas de ProGuard para Android si usas ofuscación de código
- Sigue las políticas específicas de la plataforma para App Store/Play Store
Consideraciones de seguridad
- Usa el Credentials Manager integrado para almacenar credenciales en producción
- Habilita la autenticación biométrica para operaciones sensibles
- Considera la fijación de certificados para reforzar la seguridad de la API
- Implementa un manejo adecuado de la renovación de tokens
- Usa
useHTTPS: truepara Universal Links en las plataformas compatibles