Crie um usuário
Você cria um novo usuário no seu projeto do Firebase chamando o método createUserWithEmailAndPassword
ou fazendo login em um usuário pela primeira vez usando um provedor de identidade federado, como Google Sign-In ou Facebook Login .
Você também pode criar novos usuários autenticados por senha na seção Autenticação do Firebase console , na página Usuários ou usando o Admin SDK .
Obtenha o usuário atualmente conectado
A maneira recomendada de obter o usuário atual é definindo um observador no objeto Auth:
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
// ...
}
});
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
// ...
}
});
Ao usar um observador, você garante que o objeto Auth não esteja em um estado intermediário — como inicialização — quando você obtém o usuário atual. Quando você usa signInWithRedirect
, o observador onAuthStateChanged
aguarda até que getRedirectResult
seja resolvido antes de ser acionado.
Você também pode obter o usuário conectado no momento usando a propriedade currentUser
. Se um usuário não estiver conectado, currentUser
será nulo:
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.
}
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.
}
Obtenha o perfil de um usuário
Para obter informações de perfil de um usuário, use as propriedades de uma instância de User
. Por exemplo:
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;
}
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;
}
Obtenha informações de perfil específicas do provedor de um usuário
Para obter as informações de perfil recuperadas dos provedores de login vinculados a um usuário, use a propriedade providerData
. Por exemplo:
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);
});
}
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);
});
}
Atualizar o perfil de um usuário
Você pode atualizar as informações básicas do perfil de um usuário (o nome de exibição do usuário e o URL da foto do perfil) com o método updateProfile
. Por exemplo:
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
// ...
});
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
// ...
});
Definir o endereço de e-mail de um usuário
Você pode definir o endereço de e-mail de um usuário com o método updateEmail
. Por exemplo:
import { getAuth, updateEmail } from "firebase/auth";
const auth = getAuth();
updateEmail(auth.currentUser, "user@example.com").then(() => {
// Email updated!
// ...
}).catch((error) => {
// An error occurred
// ...
});
const user = firebase.auth().currentUser;
user.updateEmail("user@example.com").then(() => {
// Update successful
// ...
}).catch((error) => {
// An error occurred
// ...
});
Enviar um e-mail de verificação a um usuário
Você pode enviar um email de verificação de endereço para um usuário com o método sendEmailVerification
. Por exemplo:
import { getAuth, sendEmailVerification } from "firebase/auth";
const auth = getAuth();
sendEmailVerification(auth.currentUser)
.then(() => {
// Email verification sent!
// ...
});
firebase.auth().currentUser.sendEmailVerification()
.then(() => {
// Email verification sent!
// ...
});
Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.
Também é possível passar o estado por meio de uma URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de verificação.
Além disso, você pode localizar o e-mail de verificação atualizando o código do idioma na instância Auth antes de enviar o e-mail. Por exemplo:
import { getAuth } from "firebase/auth";
const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// auth.useDeviceLanguage();
firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();
Definir uma senha de usuário
Você pode definir uma senha de usuário com o método updatePassword
. Por exemplo:
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
// ...
});
const user = firebase.auth().currentUser;
const newPassword = getASecureRandomPassword();
user.updatePassword(newPassword).then(() => {
// Update successful.
}).catch((error) => {
// An error ocurred
// ...
});
Envie um e-mail de redefinição de senha
Você pode enviar um email de redefinição de senha para um usuário com o método sendPasswordResetEmail
. Por exemplo:
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;
// ..
});
firebase.auth().sendPasswordResetEmail(email)
.then(() => {
// Password reset email sent!
// ..
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
// ..
});
Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.
Também é possível passar o estado por meio de uma URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de redefinição de senha.
Além disso, você pode localizar o e-mail de redefinição de senha atualizando o código do idioma na instância Auth antes de enviar o e-mail. Por exemplo:
import { getAuth } from "firebase/auth";
const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// auth.useDeviceLanguage();
firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();
Você também pode enviar e-mails de redefinição de senha do console do Firebase.
Excluir um usuário
Você pode excluir uma conta de usuário com o método delete
. Por exemplo:
import { getAuth, deleteUser } from "firebase/auth";
const auth = getAuth();
const user = auth.currentUser;
deleteUser(user).then(() => {
// User deleted.
}).catch((error) => {
// An error ocurred
// ...
});
const user = firebase.auth().currentUser;
user.delete().then(() => {
// User deleted.
}).catch((error) => {
// An error ocurred
// ...
});
Você também pode excluir usuários da seção Autenticação do console do Firebase , na página Usuários.
Reautenticar um usuário
Algumas ações sensíveis à segurança, como excluir uma conta , definir um endereço de e-mail principal e alterar uma senha , exigem que o usuário tenha feito login recentemente. Se você realizar uma dessas ações e o usuário tiver feito login há muito tempo, o a ação falha com um erro. Quando isso acontecer, autentique novamente o usuário obtendo novas credenciais de login do usuário e passando-as para reauthenticateWithCredential
. Por exemplo:
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
// ...
});
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
// ...
});
Importar contas de usuário
Você pode importar contas de usuário de um arquivo para seu projeto do Firebase usando o comando auth:import
da CLI do Firebase. Por exemplo:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14