Uwierzytelnianie Firebase umożliwia tworzenie tymczasowych anonimowych kont i korzystanie z nich aby uwierzytelnić się w Firebase. Te tymczasowe anonimowe konta mogą być używane do: zezwalaj użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na korzystanie z danych chronionych zgodnie z regułami zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć swoje dane logowania z anonimowym kontem, że mogą nadal korzystać ze swoich chronionych danych w kolejnych sesjach.
Zanim zaczniesz
W razie potrzeby wykonaj czynności opisane w przewodniku Pierwsze kroki.
Włącz logowanie anonimowe:
- W sekcji Uwierzytelnianie w konsoli Firebase otwórz Metoda logowania stronę.
- Na stronie Metoda logowania włącz Logowanie anonimowe. i kliknij Zapisz.
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelnienia za pomocą
Firebase, zaloguj użytkownika anonimowo, dzwoniąc do 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.");
}
}
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz mu na to zezwolić kontynuowanie pracy na nowym koncie – np. Dodawaj produkty do koszyka, zanim użytkownik się zarejestrował dostępnych w koszyku na zakupy nowego konta. W tym celu wykonaj następujące czynności: kroki:
Gdy użytkownik się zarejestruje, dokończ proces logowania na stronie do dostawcy uwierzytelniania do wywołania jednego z
signInWith
. Na przykład pobierz token identyfikatora Google użytkownika, Token dostępu Facebooka lub adres e-mail i hasło.Pobierz obiekt
Credential
dla nowego dostawcy uwierzytelniania:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Przekaż obiekt
Credential
dolinkWithCredential()
zalogowanego użytkownika :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."); } ```
Jeśli wywołanie linkWithCredential()
się powiedzie, nowe konto użytkownika będzie mogło
uzyskać dostęp do danych Firebase anonimowego konta.
Dalsze kroki
Gdy użytkownik utworzy nowe konto, zostanie ono zapisane w ramach projektu Firebase i możesz go użyć do identyfikacji użytkownika w każdej aplikacji niezależnie od użytej metody logowania.
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z
User
obiekt. Zobacz Zarządzanie użytkownikami.
W Bazie danych czasu rzeczywistego Firebase i regułach zabezpieczeń Cloud Storage możesz:
pobierz ze zmiennej auth
unikalny identyfikator zalogowanego użytkownika i użyj go do
kontrolować dostęp użytkownika do danych.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu wielokrotnego uwierzytelniania. dostawców, łącząc dane logowania dostawcy uwierzytelniania) z istniejącego konta użytkownika.
Aby wylogować użytkownika, zadzwoń pod numer signOut()
:
await FirebaseAuth.instance.signOut();