Use o Firebase Authentication para criar e usar contas anônimas temporárias e fazer a autenticação no Firebase. Com essas contas, os usuários que ainda não se registraram no seu app podem trabalhar com os dados protegidos pelas regras de segurança. Se um usuário anônimo se registrar no seu app, vincule as credenciais de login à conta anônima para que ele continue trabalhando com os dados protegidos nas sessões futuras.
Antes de começar
Siga as etapas no guia Primeiros passos, caso ainda não tenha feito isso.
Ativar o login anônimo:
- Na seção Autenticação do Console do Firebase, abra a página Método de login.
- Na página Método de login, ative o método Login anônimo e clique em Salvar.
Fazer a autenticação anônima no Firebase
Quando um usuário não conectado acessar um recurso do app que exige autenticação no Firebase,
faça login dele anonimamente chamando signInAnonymously()
:
try {
final userCredential =
await FirebaseAuth.instance.signInAnonymously();
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "operation-not-allowed":
print("Anonymous auth hasn't been enabled for this project.");
break;
default:
print("Unknown error.");
}
}
Converter uma conta anônima em permanente
Quando um usuário anônimo se inscreve no seu app, ele pode continuar trabalhando com a nova conta. Por exemplo, você pode deixar no carrinho de compras dessa conta os itens adicionados antes do registro. Para isso, execute as seguintes etapas:
Quando o usuário se registrar, conclua o fluxo de login do provedor de autenticação até a chamada de um dos métodos, mas sem incluir essa etapa
signInWith
. Por exemplo, consiga o token do ID do Google, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário.Receba um objeto
Credential
para o novo provedor de autenticação:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Passe o objeto
Credential
para o métodolinkWithCredential()
do usuário que fez login:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
Se a chamada a linkWithCredential()
for realizada corretamente, a nova conta do usuário terá
acesso aos dados do Firebase da conta anônima.
Próximas etapas
Depois que um usuário cria uma nova conta, ela é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login usado.
É possível receber as informações básicas de perfil do usuário do objeto
User
nos seus aplicativos. Consulte Gerenciar usuários.
Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível
receber o ID do usuário único conectado da variável auth
e usar esse ID para controlar quais dados um usuário pode acessar.
Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.
Para desconectar um usuário, chame signOut()
:
await FirebaseAuth.instance.signOut();