Autenticar com o Firebase anonimamente

Você pode usar o Firebase Authentication para criar e usar contas anônimas temporárias para autenticar com o Firebase. Essas contas anônimas temporárias podem ser usadas para permitir que usuários que ainda não se inscreveram no seu aplicativo trabalhem com dados protegidos por regras de segurança. Se um usuário anônimo decidir se inscrever em seu aplicativo, você poderá vincular suas credenciais de entrada à conta anônima para que ele possa continuar a trabalhar com seus dados protegidos em sessões futuras.

Antes de você começar

  1. Se ainda não o fez , siga as etapas no guia de introdução.

  2. Ative o login anônimo:

    • Na seção Autenticação do console do Firebase, abra a página do método de login .
    • Na página Método de login , habilite o método de login anônimo e clique em Salvar .

Autenticar com o Firebase anonimamente

Quando um usuário desconectado usa um recurso de aplicativo que requer autenticação com o Firebase, faça login no usuário 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 uma conta permanente

Quando um usuário anônimo se inscreve no seu aplicativo, você pode permitir que ele continue trabalhando com a nova conta. Por exemplo, você pode disponibilizar os itens que o usuário adicionou ao carrinho de compras antes de se inscrever no novo carrinho de compras da conta. Para isso, conclua as seguintes etapas:

  1. Quando o usuário se inscrever, conclua o fluxo de entrada para o provedor de autenticação do usuário até, mas não incluindo, chamar um dos métodos signInWith -. Por exemplo, obtenha o token de ID do Google do usuário, o token de acesso do Facebook ou o endereço de e-mail e a senha.

  2. Obtenha 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 de 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 para linkWithCredential() for bem-sucedida, a nova conta do usuário poderá acessar os dados do Firebase da conta anônima.

Próximos passos

Depois que um usuário cria uma nova conta, essa conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do projeto, independentemente do método de login usado pelo usuário.

Em seus aplicativos, você pode obter as informações básicas do perfil do User no objeto Usuário. Consulte Gerenciar usuários .

Nas regras de segurança do Firebase Realtime Database e do Cloud Storage, você pode obter o ID de usuário exclusivo do usuário conectado na variável de auth e usá-lo para controlar quais dados um usuário pode acessar.

Você pode permitir que os usuários façam login no seu aplicativo usando vários provedores de autenticação vinculando credenciais do provedor de autenticação ) a uma conta de usuário existente.

Para desconectar um usuário, chame signOut() :

await FirebaseAuth.instance.signOut();