Zarządzaj użytkownikami w Firebase

Tworzenie konta użytkownika

Nowego użytkownika możesz utworzyć w projekcie Firebase na 4 sposoby:

  • Wywołaj metodę createUserWithEmailAndPassword().
  • zalogować użytkownika po raz pierwszy przy użyciu dostawcy tożsamości sfederowanej; takich jak Logowanie przez Google, Facebook Login czy Apple.

Nowych użytkowników z uwierzytelnianiem za pomocą hasła możesz też utworzyć na stronie w konsoli Firebase na stronie Użytkownicy.

Pobieranie profilu użytkownika

Aby uzyskać informacje o profilu użytkownika, skorzystaj z właściwości User. Znaleziono trzy sposoby uzyskania obiektu User reprezentującego bieżącego użytkownika:

  • Strumienie authStateChanges, idTokenChanges i userChanges: Twoje detektory otrzymają bieżącą wartość User lub null, jeśli żaden użytkownik nie uwierzytelnione:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    Po uruchomieniu aplikacji zdarzenie jest uruchamiane po danych logowania użytkownika (jeśli są dostępne) z pamięć lokalna została przywrócona, co oznacza, że słuchacze zawsze otrzymują jest wywoływane po zainicjowaniu stanu użytkownika. Następnie, gdy uwierzytelnianie zmian stanu użytkownika, zostanie wygenerowane nowe zdarzenie ze zaktualizowanym stanem użytkownika.

    Słuchając stanu uwierzytelniania, możesz utworzyć interfejs użytkownika, Reaguje na te zmiany stanu uwierzytelniania.

  • Obiekt UserCredential zwrócony przez uwierzytelnianie (signIn-) metody: obiekt UserCredential ma właściwość user z bieżącą User:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • Właściwość currentUser instancji FirebaseAuth: jeśli masz pewność, że Użytkownik jest obecnie zalogowany, dostęp do User możesz uzyskać z currentUser usługa:

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    Wartość currentUser może być wartością null z dwóch powodów:

    • Użytkownik nie jest zalogowany.
    • Inicjowanie obiektu uwierzytelniania nie zostało zakończone. Jeśli używasz detektora, aby zachować śledzenia stanu logowania użytkownika, nie musisz się tym zajmować.

Uzyskiwanie informacji o profilu użytkownika specyficznych dla dostawcy

Aby pobrać informacje profilowe pobrane od dostawców logowania połączonych z użytkownika, należy użyć właściwości providerData. Przykład:

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

Aktualizowanie profilu użytkownika

Możesz aktualizować podstawowe informacje o profilu użytkownika – jego wyświetlaną nazwę. i adresu URL zdjęcia profilowego za pomocą metod update. Przykład:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

Ustawianie adresu e-mail użytkownika

Adres e-mail użytkownika możesz skonfigurować za pomocą metody updateEmail(). Przykład:

await user?.updateEmail("janeq@example.com");

Wysyłanie e-maila weryfikacyjnego do użytkownika

Możesz wysłać e-maila weryfikacyjnego do użytkownika z Metoda sendEmailVerification(). Przykład:

await user?.sendEmailVerification();

Możesz dostosować szablon e-maila używany w sekcji Uwierzytelnianie w konsoli Firebase na stronie Szablony e-maili. Zobacz Szablony e-maili w Centrum pomocy Firebase.

Można również przekazywać stan za pomocą dalej – URL – aby przekierować z powrotem do aplikacji podczas wysyłania e-maila weryfikacyjnego.

Możesz też zlokalizować e-maila weryfikacyjnego, aktualizując język. w instancji Auth przed wysłaniem e-maila. Przykład:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

Ustawianie hasła użytkownika

Hasło użytkownika możesz ustawić za pomocą metody updatePassword(). Przykład:

await user?.updatePassword(newPassword);

Wyślij e-maila do resetowania hasła

Możesz wysłać e-maila do resetowania hasła do użytkownika, który korzysta z: sendPasswordResetEmail() . Przykład:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

Możesz dostosować szablon e-maila używany w sekcji Uwierzytelnianie w konsoli Firebase na stronie Szablony e-maili. Zobacz Szablony e-maili w Centrum pomocy Firebase.

Można również przekazywać stan za pomocą dalej – URL – aby przekierować z powrotem do aplikacji podczas wysyłania e-maila do resetowania hasła.

Możesz też zlokalizować e-mail dotyczący resetowania hasła, aktualizując język w instancji Auth przed wysłaniem e-maila. Przykład:

await FirebaseAuth.instance.setLanguageCode("fr");

Możesz też wysyłać e-maile dotyczące resetowania hasła z konsoli Firebase.

Usuwanie konta użytkownika

Konto użytkownika możesz usunąć za pomocą metody delete(). Przykład:

await user?.delete();

Użytkowników możesz też usuwać z sekcji Uwierzytelnianie Konsola Firebase na stronie Użytkownicy.

Ponowne uwierzytelnianie użytkownika

Niektóre działania związane z bezpieczeństwem, takie jak: usunięciu konta, ustawienie głównego adresu e-mail oraz zmianę hasła – użytkownik musi mieć niedawno się zalogowałeś(-aś). Jeśli wykonasz jedną z tych czynności, a użytkownik się zaloguje zbyt dawno temu działanie kończy się niepowodzeniem i wysyła żądanie FirebaseAuthException z kodem requires-recent-login W takim przypadku ponownie uwierzytelnij użytkownika, uzyskując nowe dane logowania. od użytkownika i przekazując dane logowania do usługi reauthenticate. Przykład:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

Importowanie kont użytkowników

Konta użytkowników możesz importować z pliku do projektu Firebase za pomocą Polecenie auth:import w interfejsie wiersza poleceń Firebase. Przykład:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14