Dzięki Uwierzytelnianiu Firebase możesz tworzyć tymczasowe anonimowe konta i używać ich do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą umożliwiać użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na pracę z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z anonimowym kontem, aby mógł 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 stronę Metoda logowania.
- Na stronie Metoda logowania włącz metodę Logowanie anonimowe i kliknij Zapisz.
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelniania w Firebase, zaloguj go anonimowo, wywołując funkcję 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 zezwolić mu na kontynuowanie pracy na nowym koncie – np. możesz udostępnić produkty dodane przez tego użytkownika do koszyka, zanim się zarejestruje w koszyku na nowe konto. Aby to zrobić:
Gdy użytkownik się zarejestruje, przeprowadź proces logowania u dostawcy uwierzytelniania użytkownika, aż do wywołania jednej z metod
signInWith
. Możesz na przykład uzyskać 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
do metodylinkWithCredential()
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 uzyska dostęp do danych Firebase tego konta anonimowego.
Dalsze kroki
Gdy użytkownik utworzy nowe konto, będzie ono przechowywane w ramach Twojego projektu Firebase i będzie można go używać do identyfikowania użytkownika we wszystkich aplikacjach w Twoim projekcie, niezależnie od użytej metody logowania.
W aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu User
. Zobacz Zarządzanie użytkownikami.
W bazie danych czasu rzeczywistego Firebase i regułach zabezpieczeń Cloud Storage możesz uzyskać ze zmiennej auth
unikalny identyfikator zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu różnych dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania) z istniejącym kontem użytkownika.
Aby wylogować użytkownika, zadzwoń pod numer signOut()
:
await FirebaseAuth.instance.signOut();