Uwierzytelniaj anonimowo w Firebase

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

  1. W razie potrzeby wykonaj czynności opisane w przewodniku Pierwsze kroki.

  2. 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:

  1. 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.

  2. 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.
  3. Przekaż obiekt Credential do linkWithCredential() 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();