Możesz użyć uwierzytelniania Firebase, aby utworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Za pomocą tych tymczasowych anonimowych kont użytkownicy, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, mogą pracować z danymi chronionymi regułami bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać jego dane logowania z anonimowym kontem, aby mógł kontynuować pracę z chronionymi danymi w przyszłych sesjach.
Zanim zaczniesz
- Dodaj Firebase do swojego projektu JavaScript .
- Jeśli jeszcze nie połączyłeś aplikacji z projektem Firebase, zrób to z konsoli Firebase .
- Włącz anonimową autoryzację:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie .
- Na stronie Metody logowania włącz metodę logowania anonimowego .
- Opcjonalnie : jeśli zaktualizowałeś swój projekt do uwierzytelniania Firebase z platformą tożsamości , możesz włączyć automatyczne czyszczenie. Po włączeniu tego ustawienia anonimowe konta starsze niż 30 dni zostaną automatycznie usunięte. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani przydziałów rozliczeniowych. Zobacz Automatyczne czyszczenie .
Uwierzytelnij się anonimowo w Firebase
Gdy niezalogowany użytkownik korzysta z funkcji aplikacji wymagającej uwierzytelniania w Firebase, zaloguj się anonimowo, wykonując następujące kroki:
- Wywołaj
signInAnonymously
:W tym miejscu można także wychwytywać i obsługiwać błędy. Listę kodów błędów znajdziesz w Dokumentach referencyjnych uwierzytelniania .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; // ... });
- Jeśli
signInAnonymously
zakończy się bez błędu, zostanie uruchomiony obserwator zarejestrowany wonAuthStateChanged
i będziesz mógł uzyskać dane konta anonimowego użytkownika z obiektuUser
: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 // ... } });
Zamień konto anonimowe na konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie — na przykład możesz udostępnić na nowym koncie pozycje, które użytkownik dodał do koszyka przed rejestracją. koszyk konta. Aby to zrobić, wykonaj następujące kroki:
- Gdy użytkownik zarejestruje się, wykonaj proces logowania dla dostawcy uwierzytelniania użytkownika, aż do wywołania jednej z metod
Auth.signInWith
, ale nie w tym. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło. Uzyskaj
AuthCredential
dla nowego dostawcy uwierzytelniania:Zaloguj się przez 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);
Nazwa użytkownika 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);
Logowanie za pomocą hasła 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);
Przekaż obiekt
AuthCredential
do metodylink
zalogowanego użytkownika: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); });
Jeśli link
się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase konta anonimowego.
Automatyczne czyszczenie
Jeśli zaktualizowałeś swój projekt do uwierzytelniania Firebase z platformą tożsamości , możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji zezwalasz Firebase na automatyczne usuwanie anonimowych kont starszych niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie wliczane do limitów użytkowania ani przydziałów rozliczeniowych.
- Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie usunięte w dowolnym momencie po 30 dniach od ich utworzenia.
- Konta anonimowe utworzone przed włączeniem automatycznego czyszczenia będą kwalifikowały się do automatycznego usunięcia po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta zaplanowane do usunięcia pozostaną zaplanowane do usunięcia. Konta te nie wliczają się do limitów użytkowania ani przydziałów rozliczeniowych.
- Jeśli „uaktualnisz” konto anonimowe, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz sprawdzić, ilu użytkowników będzie to dotyczyć, a Twój projekt został uaktualniony do uwierzytelniania Firebase z platformą tożsamości , możesz filtrować według is_anon
w Cloud Logging .
Następne kroki
Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase .