Crea un usuario
Para crear un usuario nuevo en tu proyecto de Firebase, llama al método createUserWithEmailAndPassword
o haz que el usuario acceda por primera vez con un proveedor de identidad federada, como Acceso con Google o Acceso con Facebook.
También puedes crear nuevos usuarios autenticados con contraseña en la sección Authentication de Firebase console, en la página Usuarios, o bien con el SDK de Admin.
Obtén el usuario con sesión activa
La manera recomendada de obtener el usuario actual es establecer un observador en el objeto Auth:
Web
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
Con un observador, te aseguras de que el objeto Auth no esté en un estado intermedio,
como la inicialización, cuando obtengas el usuario actual. Cuando utilizas signInWithRedirect
, el observador de onAuthStateChanged
espera hasta que getRedirectResult
se resuelva antes de activarse.
También puedes usar la propiedad currentUser
para obtener el usuario que accedió. Si no accedió ningún usuario, el valor de currentUser
es nulo:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user // ... } else { // No user is signed in. }
Web
const user = firebase.auth().currentUser; if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User // ... } else { // No user is signed in. }
Obtén el perfil de un usuario
Para obtener la información del perfil de un usuario, usa las propiedades de una instancia de User
. Por ejemplo:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user !== null) { // The user object has basic properties such as display name, email, etc. const displayName = user.displayName; const email = user.email; const photoURL = user.photoURL; const emailVerified = user.emailVerified; // The user's ID, unique to the Firebase project. Do NOT use // this value to authenticate with your backend server, if // you have one. Use User.getToken() instead. const uid = user.uid; }
Web
const user = firebase.auth().currentUser; if (user !== null) { // The user object has basic properties such as display name, email, etc. const displayName = user.displayName; const email = user.email; const photoURL = user.photoURL; const emailVerified = user.emailVerified; // The user's ID, unique to the Firebase project. Do NOT use // this value to authenticate with your backend server, if // you have one. Use User.getIdToken() instead. const uid = user.uid; }
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:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user !== null) { user.providerData.forEach((profile) => { console.log("Sign-in provider: " + profile.providerId); console.log(" Provider-specific UID: " + profile.uid); console.log(" Name: " + profile.displayName); console.log(" Email: " + profile.email); console.log(" Photo URL: " + profile.photoURL); }); }
Web
const user = firebase.auth().currentUser; if (user !== null) { user.providerData.forEach((profile) => { console.log("Sign-in provider: " + profile.providerId); console.log(" Provider-specific UID: " + profile.uid); console.log(" Name: " + profile.displayName); console.log(" Email: " + profile.email); console.log(" Photo URL: " + profile.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 updateProfile
. Por ejemplo:
Web
import { getAuth, updateProfile } from "firebase/auth"; const auth = getAuth(); updateProfile(auth.currentUser, { displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg" }).then(() => { // Profile updated! // ... }).catch((error) => { // An error occurred // ... });
Web
const user = firebase.auth().currentUser; user.updateProfile({ displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg" }).then(() => { // Update successful // ... }).catch((error) => { // An error occurred // ... });
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:
Web
import { getAuth, updateEmail } from "firebase/auth"; const auth = getAuth(); updateEmail(auth.currentUser, "user@example.com").then(() => { // Email updated! // ... }).catch((error) => { // An error occurred // ... });
Web
const user = firebase.auth().currentUser; user.updateEmail("user@example.com").then(() => { // Update successful // ... }).catch((error) => { // An error occurred // ... });
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:
Web
import { getAuth, sendEmailVerification } from "firebase/auth"; const auth = getAuth(); sendEmailVerification(auth.currentUser) .then(() => { // Email verification sent! // ... });
Web
firebase.auth().currentUser.sendEmailVerification() .then(() => { // Email verification sent! // ... });
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:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
Configura la contraseña de un usuario
Para configurar la contraseña de un usuario, puedes usar el método updatePassword
. Por ejemplo:
Web
import { getAuth, updatePassword } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; const newPassword = getASecureRandomPassword(); updatePassword(user, newPassword).then(() => { // Update successful. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; const newPassword = getASecureRandomPassword(); user.updatePassword(newPassword).then(() => { // Update successful. }).catch((error) => { // An error ocurred // ... });
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:
Web
import { getAuth, sendPasswordResetEmail } from "firebase/auth"; const auth = getAuth(); sendPasswordResetEmail(auth, email) .then(() => { // Password reset email sent! // .. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web
firebase.auth().sendPasswordResetEmail(email) .then(() => { // Password reset email sent! // .. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
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:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
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:
Web
import { getAuth, deleteUser } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; deleteUser(user).then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; user.delete().then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
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á.
Cuando esto sucede, debes volver a autenticar al usuario. Para ello, obtén credenciales de acceso nuevas del usuario y pásalas a reauthenticateWithCredential
.
Por ejemplo:
Web
import { getAuth, reauthenticateWithCredential } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; // TODO(you): prompt the user to re-provide their sign-in credentials const credential = promptForCredentials(); reauthenticateWithCredential(user, credential).then(() => { // User re-authenticated. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; // TODO(you): prompt the user to re-provide their sign-in credentials const credential = promptForCredentials(); user.reauthenticateWithCredential(credential).then(() => { // User re-authenticated. }).catch((error) => { // An error occurred // ... });
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