Crea un usuario
Existen cuatro maneras de crear un usuario nuevo en un proyecto de Firebase:
- Llama al método
createUserWithEmailAndPassword()
. - Permite que un usuario acceda por primera vez con un proveedor de identidad federada, como Acceso con Google, Acceso con Facebook o Apple.
También puedes crear nuevos usuarios autenticados con contraseña en la sección Authentication de Firebase console, en la página Usuarios.
Obtén el perfil de un usuario
Para obtener la información del perfil de un usuario, utiliza las propiedades de User
. Existen
tres maneras de obtener un objeto User
para que represente al usuario actual:
Las transmisiones
authStateChanges
,idTokenChanges
yuserChanges
: Los objetos de escucha recibirán losUser
actuales, onull
si no se autenticó el usuario:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Cuando se inicia la app, se activa un evento después de que se restablecen las credenciales del usuario (si las hay) del almacenamiento local, lo que significa que siempre se llama a los objetos de escucha cuando se inicializa el estado del usuario. Luego, cada vez que cambie el estado de autenticación, se generará un evento nuevo con el estado actualizado del usuario.
Si escuchas el estado de autenticación, puedes compilar una interfaz de usuario que reaccione a estos cambios en el estado de autenticación.
El objeto
UserCredential
que muestra los métodos de autenticación (signIn
-): El objetoUserCredential
tiene una propiedaduser
con elUser
actual:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
La propiedad
currentUser
de la instancia deFirebaseAuth
: Si estás seguro de que el usuario accedió, puedes acceder aUser
desde la propiedadcurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
puede sernull
por dos motivos:- El usuario no accedió.
- No se terminó de inicializar el objeto Auth. Si usas un objeto de escucha para hacer un seguimiento del estado de acceso del usuario, no necesitas preocuparte por este caso.
Obtén la información de perfil de un usuario de un proveedor específico
Para obtener la información de perfil que se recuperó de los proveedores de acceso vinculados con un usuario, usa la propiedad providerData
. Por ejemplo:
if (user != null) {
for (final providerProfile in user.providerData) {
// ID of the provider (google.com, apple.com, etc.)
final provider = providerProfile.providerId;
// UID specific to the provider
final uid = providerProfile.uid;
// Name, email address, and profile photo URL
final name = providerProfile.displayName;
final emailAddress = providerProfile.email;
final profilePhoto = providerProfile.photoURL;
}
}
Actualiza el perfil de un usuario
Puedes actualizar información básica del perfil de un usuario (su nombre visible
y la URL de su foto de perfil) con el método update
. Por ejemplo:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
Configura la dirección de correo electrónico de un usuario
Puedes configurar la dirección de correo electrónico de un usuario con el método updateEmail()
. Por ejemplo:
await user?.updateEmail("janeq@example.com");
Envía un mensaje de verificación a un usuario
Para enviarle un mensaje de verificación de dirección a un usuario, puedes usar el método sendEmailVerification()
. Por ejemplo:
await user?.sendEmailVerification();
Puedes personalizar la plantilla de correo electrónico que se usa en la sección Authentication de Firebase console, en la página Plantillas de correo electrónico. Consulta Plantillas de correo electrónico en el Centro de ayuda de Firebase.
También es posible pasar el estado a través de una URL de continuación para regresar a la app cuando se envía un mensaje de verificación.
Además, para localizar el mensaje de verificación, puedes actualizar el código de idioma en la instancia de Auth antes de enviarlo. Por ejemplo:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Configura la contraseña de un usuario
Para configurar la contraseña de un usuario, puedes usar el método updatePassword()
. Por ejemplo:
await user?.updatePassword(newPassword);
Envía un correo electrónico de restablecimiento de contraseña
Para enviar un correo electrónico de restablecimiento de contraseña a un usuario, puedes usar el método sendPasswordResetEmail()
. Por ejemplo:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Puedes personalizar la plantilla de correo electrónico que se usa en la sección Authentication de Firebase console, en la página Plantillas de correo electrónico. Consulta Plantillas de correo electrónico en el Centro de ayuda de Firebase.
También es posible pasar el estado a través de una URL de continuación para regresar a la app cuando se envía un correo electrónico de restablecimiento de la contraseña.
Además, para localizar el correo electrónico de restablecimiento de la contraseña, puedes actualizar el código de idioma en la instancia de Auth antes de enviarlo. Por ejemplo:
await FirebaseAuth.instance.setLanguageCode("fr");
También puedes enviar correos electrónicos de restablecimiento de contraseña desde Firebase console.
Borra un usuario
Para borrar una cuenta de usuario, puedes usar el método delete()
. Por ejemplo:
await user?.delete();
También puedes borrar usuarios en la sección Authentication de Firebase console, en la página Usuarios.
Vuelve a autenticar un usuario
Por motivos de seguridad, algunas acciones, como
borrar una cuenta,
configurar una dirección de correo electrónico principal y
cambiar una contraseña, no pueden realizarse si el usuario no accedió a
su cuenta recientemente. Si transcurrió demasiado tiempo desde que el usuario accedió a su cuenta,
cualquier intento de realizar estas acciones fallará y se mostrará una FirebaseAuthException
con el código
requires-recent-login
.
Cuando esto sucede, debes volver a autenticar al usuario. Para ello, obtén credenciales
de acceso nuevas del usuario y pásalas a reauthenticate
. Por ejemplo:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Importa cuentas de usuario
Para importar cuentas de usuario desde un archivo a tu proyecto de Firebase, puedes usar el comando auth:import
de Firebase CLI. Por ejemplo:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14