Criar um usuário
Você cria um novo usuário no seu projeto do Firebase de quatro maneiras:
- Chame o método
createUserWithEmailAndPassword()
. - Faça o login de um usuário pela primeira vez usando um provedor de identidade federado , como o Login do Google, o Login do Facebook ou a Apple.
Também é possível criar novos usuários autenticados por senha na seção "Autenticação" do Console do Firebase, na página "Usuários".
Receber o perfil de um usuário
Para receber informações de perfil de um usuário, use as propriedades de User
. Há
três maneiras de ter um objeto User
que represente o usuário atual:
Os streams
authStateChanges
,idTokenChanges
euserChanges
: seus listeners vão receber oUser
ounull
atual se nenhum usuário estiver autenticado:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Quando o app é iniciado, um evento é acionado após a restauração das credenciais do usuário (se houver) do armazenamento local. Isso significa que os listeners sempre são chamados quando o estado do usuário é inicializado. Depois, sempre que o estado de autenticação mudar, um novo evento será gerado com o estado do usuário atualizado.
Ao ouvir o estado de autenticação, você pode criar uma interface do usuário que reage a essas alterações no estado de autenticação.
O objeto
UserCredential
retornado pelos métodos de autenticação (signIn
-): o objetoUserCredential
tem uma propriedadeuser
com oUser
atual:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
A propriedade
currentUser
da instânciaFirebaseAuth
: se você tiver certeza de que o usuário está conectado, acesseUser
na propriedadecurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
O
currentUser
pode sernull
por dois motivos:- O usuário não está conectado.
- A inicialização do objeto de autenticação não foi concluída. Se você usa um listener para monitorar o status de login do usuário, não é necessário processar esse caso.
Receber informações específicas de provedor do perfil de um usuário
Para receber as informações de perfil obtidas dos provedores de login vinculados a um
usuário, use a propriedade providerData
. Exemplo:
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;
}
}
Atualizar o perfil de um usuário
É possível atualizar as informações básicas do perfil de um usuário, como o nome de exibição
e o URL da foto do perfil dele, com o método update
. Exemplo:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
Definir o endereço de e-mail de um usuário
É possível definir o endereço de e-mail de um usuário com o método updateEmail()
. Exemplo:
await user?.updateEmail("janeq@example.com");
Enviar um e-mail de verificação a um usuário
Envie um e-mail de verificação de endereço a um usuário com o
método sendEmailVerification()
. Exemplo:
await user?.sendEmailVerification();
É possível 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 transmitir um estado usando um URL de confirmação a fim de redirecionar para o app 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. Exemplo:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Definir a senha de um usuário
Defina a senha de um usuário com o método updatePassword()
. Exemplo:
await user?.updatePassword(newPassword);
Enviar um e-mail de redefinição de senha
Envie um e-mail de redefinição de senha a um usuário com o método
sendPasswordResetEmail()
. Exemplo:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
É possível 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 transmitir um estado usando um URL de confirmação a fim de redirecionar para o app ao enviar um e-mail de verificação.
Além disso, você pode localizar o e-mail de redefinição da senha atualizando o código do idioma na instância Auth antes de enviar o e-mail. Exemplo:
await FirebaseAuth.instance.setLanguageCode("fr");
Você também pode enviar e-mails de redefinição de senha pelo Firebase console.
Excluir um usuário
Exclua uma conta de usuário com o método delete()
. Exemplo:
await user?.delete();
Também é possível excluir usuários na seção Authentication do Console do Firebase na página "Usuários".
Reautenticar um usuário
Algumas ações que apresentam riscos à segurança, como
excluir uma conta,
configurar um endereço de e-mail principal e
alterar uma senha, exigem que o usuário tenha
feito login recentemente. Se você executar uma dessas ações e o usuário tiver feito login
há muito tempo, ela falhará e gerará uma FirebaseAuthException
com o código
requires-recent-login
.
Quando isso acontecer, autentique o usuário novamente gerando novas credenciais de login
e transmitindo-as para reauthenticate
. Exemplo:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Importar contas de usuário
Use o comando auth:import
da CLI do Firebase para importar contas de usuário de um
arquivo para o projeto do Firebase. Exemplo:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14