Crie um usuário
Você cria um novo usuário em seu projeto do Firebase de quatro maneiras:
- Chame o método
createUserWithEmailAndPassword()
. - Faça login de um usuário pela primeira vez usando um provedor de identidade federado , como Google Sign-In, Facebook Login ou Apple.
Você também pode criar novos usuários autenticados por senha na seção Autenticação do console do Firebase , na página Usuários.
Obtenha o perfil de um usuário
Para obter informações de perfil de um usuário, use as propriedades de User
. Existem três maneiras de obter um objeto User
representando o usuário atual:
Os fluxos
authStateChanges
,idTokenChanges
euserChanges
: seus ouvintes receberão oUser
atual ounull
se nenhum usuário for autenticado:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Quando o aplicativo é iniciado, um evento é acionado após as credenciais do usuário (se houver) do armazenamento local terem sido restauradas, o que significa que seus ouvintes sempre serão chamados quando o estado do usuário for inicializado. Então, 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 construir uma interface de usuário que reaja a essas mudanças no estado de autenticação.
O objeto
UserCredential
retornado pelos métodos de autenticação (signIn
-): o objetoUserCredential
possui 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 tiver certeza de que o usuário está conectado no momento, você pode acessar oUser
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.
- O objeto de autenticação não concluiu a inicialização. Se você usar um ouvinte para acompanhar o status de entrada do usuário, não precisará lidar com esse caso.
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:
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
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 os métodos update
-. Por 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
Você pode definir o endereço de e-mail de um usuário com o método updateEmail()
. Por exemplo:
await user?.updateEmail("janeq@example.com");
Enviar um e-mail de verificação a um usuário
Você pode enviar um e-mail de verificação de endereço para um usuário com o método sendEmailVerification()
. Por exemplo:
await user?.sendEmailVerification();
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:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Definir uma senha de usuário
Você pode definir a senha de um usuário com o método updatePassword()
. Por exemplo:
await user?.updatePassword(newPassword);
Envie um e-mail de redefinição de senha
Você pode enviar um e-mail de redefinição de senha para um usuário com o método sendPasswordResetEmail()
. Por exemplo:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
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:
await FirebaseAuth.instance.setLanguageCode("fr");
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:
await user?.delete();
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 action falha e lança uma FirebaseAuthException
com o código requires-recent-login
. Quando isso acontecer, autentique novamente o usuário obtendo novas credenciais de login do usuário e passando-as para reauthenticate
. Por 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
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