Do uwierzytelniania w Firebase możesz używać Uwierzytelniania Firebase, aby tworzyć i wykorzystywać tymczasowe konta anonimowe. Tych tymczasowych kont anonimowych można używać, aby umożliwić użytkownikom, którzy nie zarejestrowali się jeszcze w aplikacji, 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 kontem anonimowym, aby mógł w przyszłości nadal pracować z chronionymi danymi.
Zanim zaczniesz
Jeśli nie została jeszcze przeprowadzona, wykonaj kroki opisane w przewodniku Pierwsze kroki.
Włącz anonimowe logowanie:
- W sekcji Uwierzytelnianie w konsoli Firebase otwórz stronę Metoda logowania.
- Na stronie Metoda logowania włącz Logowanie anonimowe i kliknij Zapisz.
Anonimowe uwierzytelnianie w Firebase
Gdy użytkownik, który nie jest zalogowany, używa funkcji aplikacji wymagającej uwierzytelniania w Firebase, zaloguj go anonimowo, wywołując 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. Możesz na przykład sprawić, że produkty dodane przez użytkownika do koszyka przed rejestracją będą dostępne w koszyku na nowym koncie. Aby to zrobić, wykonaj te czynności:
Gdy użytkownik się zarejestruje, dokończ proces logowania w przypadku dostawcy uwierzytelniania użytkownika, ale nie wywołuj żadnej z metod
signInWith. Możesz na przykład uzyskać token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.Pobierz obiekt
Credentialdla 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
Credentialdo metodylinkWithCredential()użytkownika logującego się: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 konta anonimowego.
Dalsze kroki
Po utworzeniu przez użytkownika nowego konta jest ono przechowywane w projekcie Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od metody logowania.
W aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu
User. Zobacz Zarządzanie użytkownikami.
W regułach bezpieczeństwa Bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać unikalny identyfikator zalogowanego użytkownika ze zmiennej auth i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj funkcję signOut():
await FirebaseAuth.instance.signOut();