Autenticar com Firebase anonimamente

Você pode usar o Firebase Authentication para criar e usar contas anônimas temporárias para autenticação no 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 no seu aplicativo, você poderá vincular suas credenciais de login à conta anônima para que ele possa continuar trabalhando 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 primeiros passos .

  2. Ative 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 , habilite o método de login anônimo e clique em Salvar .

Autenticar com Firebase anonimamente

Quando um usuário desconectado usa um recurso do aplicativo que requer autenticação com o Firebase, faça login do 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 em 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 em sua nova conta. carrinho de compras da conta. Para fazer 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, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário.

  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, ela é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do seu projeto, independentemente do método de login usado pelo usuário.

Nos seus aplicativos, você pode obter as informações básicas do perfil do usuário no objeto User . 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 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 as credenciais do provedor de autenticação a uma conta de usuário existente.

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

await FirebaseAuth.instance.signOut();