Fazer a autenticação anônima no Firebase

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

  1. Siga as etapas no guia Primeiros passos, caso ainda não tenha feito isso.

  2. 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:

  1. 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.

  2. 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.
    
  3. Passe o objeto Credential para o método linkWithCredential() 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();