Możesz używać Firebase Authentication do tworzenia i używania tymczasowych kont anonimowych do uwierzytelniania w Firebase. Tymczasowe anonimowe konta mogą być używane do umożliwienia użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracy z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w aplikacji, możesz połączyć jego dane logowania z kontem anonimowym, aby mógł on nadal pracować z chronionymi danymi w kolejnych sesjach.
Zanim zaczniesz
- Dodaj Firebase do projektu JavaScript.
- Jeśli nie masz jeszcze połączonej aplikacji z projektem Firebase, wykonaj tę czynność w konsoli Firebase.
- Włączanie anonimowego uwierzytelniania:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na stronie Metody logowania włącz metodę logowania Anonimowy.
- Opcjonalnie: jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta, które istnieją od ponad 30 dni, zostaną automatycznie usunięte. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów wykorzystania ani kwot na potrzeby rozliczeń. Zobacz Automatyczne czyszczenie.
Anonimowe uwierzytelnianie w Firebase
Gdy użytkownik wylogowany korzysta z funkcji aplikacji, która wymaga uwierzytelniania za pomocą Firebase, zaloguj go anonimowo, wykonując te czynności:
- Wywołaj metodę
signInAnonymously
:import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- Jeśli metoda
signInAnonymously
zakończy się bez błędów, zostanie uruchomiony obserwator zarejestrowany w obiekcieonAuthStateChanged
, dzięki czemu możesz uzyskać dane konta anonimowego użytkownika z obiektuUser
: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 // ... } });
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 // ... } });
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie. Możesz na przykład udostępnić w koszyku nowego konta produkty, które użytkownik dodał do koszyka przed rejestracją. Aby to zrobić:
- Gdy użytkownik się rejestruje, dokończ proces logowania w usłudze uwierzytelniania, aż do wywołania jednej z metod
Auth.signInWith
. Możesz na przykład pobrać token identyfikatora Google, token dostępu Facebooka lub adres e-mail i hasło użytkownika. Uzyskaj
AuthCredential
dla nowego dostawcy uwierzytelniania:Logowanie przez Google
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Logowanie przez Facebooka
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Logowanie za pomocą adresu e-mail i hasła
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Przekaż obiekt
AuthCredential
metodzielink
użytkownika logującego się: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); });
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); });
Jeśli wywołanie funkcji link
się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase na anonimowym koncie.
Automatyczne oczyszczanie
Jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji Firebase automatycznie usuwa anonimowe konta, które mają więcej niż 30 dni. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie wliczane do limitów wykorzystania ani limitów płatności.
- Anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać usunięte automatycznie w dowolnym momencie po 30 dniach od ich utworzenia.
- Istniejące konta anonimowe będą mogły zostać automatycznie usunięte po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie zaplanowane do usunięcia anonimowe konta pozostaną zaplanowane do usunięcia.
- Jeśli „uaktualnisz” konto anonimowe, łącząc je z dowolną metodą logowania, konto to nie zostanie automatycznie usunięte.
Jeśli chcesz sprawdzić, ilu użytkowników dotyczy ta zmiana, zanim ją włączysz, i masz projekt w wersji Firebase Authentication with Identity Platform, możesz przefiltrować dane w Cloud Logging według atrybutu is_anon
.
Dalsze kroki
Teraz, gdy użytkownicy mogą się uwierzytelniać za pomocą Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase.