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
- Adicione o Firebase ao seu projeto do JavaScript.
- Caso você ainda não tenha conectado o app ao projeto do Firebase, faça isso no Console do Firebase.
- Ative a autenticação anônima:
- No Console do Firebase, abra a seção Authentication.
- Na página Métodos de login, ative o método de login Anônimo.
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 executando as seguintes etapas:
- Chame o método
signInAnonymously
:Versão 9 para a Web
import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
Versão 8 para a Web
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- Se o método
signInAnonymously
for concluído sem erros, o observador registrado emonAuthStateChanged
será acionado. Em seguida, será possível acessar os dados da conta do usuário anônimo com o objetoUser
:Versão 9 para a Web
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/firebase.User const uid = user.uid; // ... } else { // User is signed out // ... } });
Versão 8 para a Web
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/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
Converter uma conta anônima em permanente
Quando um usuário anônimo se registra 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 inscrever, conclua o fluxo de login do provedor de autenticação
até a chamada de um dos métodos
Auth.signInWith
, mas sem incluir essa etapa. 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. Consiga um
AuthCredential
para o novo provedor de autenticação:Login do Google
Versão 9 para a Web
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Versão 8 para a Web
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Login do Facebook
Versão 9 para a Web
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Versão 8 para a Web
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Login com e-mail/senha
Versão 9 para a Web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Versão 8 para a Web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Transfira o objeto
AuthCredential
para o métodolink
do usuário que fez login:Versão 9 para a Web
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); });
Versão 8 para a Web
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 concluída, a nova conta do usuário terá
acesso aos dados do Firebase da conta anônima.
Próximas etapas
Agora que os usuários podem se autenticar com o Firebase, use as regras do Firebase para controlar os acessos ao banco de dados.