Autenticar com Firebase anonimamente usando JavaScript

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. Adicione o Firebase ao seu projeto JavaScript .
  2. Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça isso no console do Firebase .
  3. Habilite autenticação anônima:
    1. No console do Firebase , abra a seção Auth .
    2. Na página Métodos de login , habilite o método de login anônimo .
    3. Opcional : se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática. Ao ativar esta configuração, as contas anônimas com mais de 30 dias serão excluídas automaticamente. Em projetos com limpeza automática habilitada, a autenticação anônima não será mais contabilizada nos limites de uso ou nas cotas de cobrança. Consulte Limpeza automática .

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 seguindo estas etapas:

  1. Chame o método signInAnonymously :

    Web modular API

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web namespaced API

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    É aqui também que você pode detectar e tratar erros. Para obter uma lista de códigos de erro, consulte os documentos de referência de autenticação .
  2. Se o método signInAnonymously for concluído sem erros, o observador registrado em onAuthStateChanged será acionado e você poderá obter os dados da conta do usuário anônimo do objeto User :

    Web modular API

    import { getAuth, onAuthStateChanged } from "firebase/auth";
    
    const auth = getAuth();
    onAuthStateChanged(auth, (user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/auth.user
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web namespaced API

    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/v8/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

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 do provedor de autenticação do usuário até, mas não incluindo, chamar um dos métodos Auth.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 AuthCredential para o novo provedor de autenticação:

    Login do Google

    Web modular API

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web namespaced API

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Entrar no Facebook

    Web modular API

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web namespaced API

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    Login com senha de e-mail

    Web modular API

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web namespaced API

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Passe o objeto AuthCredential para o método link do usuário de login:

    Web modular API

    import { getAuth, linkWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    linkWithCredential(auth.currentUser, credential)
      .then((usercred) => {
        const user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

    Web namespaced API

    auth.currentUser.linkWithCredential(credential)
      .then((usercred) => {
        var user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

Se a chamada para link for bem-sucedida, a nova conta do usuário poderá acessar os dados do Firebase da conta anônima.

Limpeza automática

Se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática no Firebase console. Ao ativar esse recurso, você permite que o Firebase exclua automaticamente contas anônimas com mais de 30 dias. Em projetos com limpeza automática habilitada, a autenticação anônima não será contabilizada nos limites de uso ou nas cotas de cobrança.

  • Quaisquer contas anônimas criadas após a ativação da limpeza automática poderão ser excluídas automaticamente a qualquer momento após 30 dias após a criação.
  • Contas anônimas criadas antes da ativação da limpeza automática serão elegíveis para exclusão automática a partir de 30 dias após a ativação da limpeza automática.
  • Se você desativar a limpeza automática, todas as contas anônimas programadas para exclusão permanecerão programadas para exclusão. Essas contas não contam para limites de uso ou cotas de cobrança.
  • Se você "atualizar" uma conta anônima vinculando-a a qualquer método de login, a conta não será excluída automaticamente.

Se você quiser ver quantos usuários serão afetados antes de ativar esse recurso e tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá filtrar por is_anon no Cloud Logging .

Próximos passos

Agora que os usuários podem se autenticar com o Firebase, você pode controlar o acesso deles aos dados no seu banco de dados do Firebase usando regras do Firebase .