Zarządzaj użytkownikami w Firebase

Utwórz użytkownika

Nowego użytkownika w projekcie Firebase tworzy się na cztery sposoby:

  • Wywołaj metodę createUserWithEmailAndPassword() .
  • Zaloguj się użytkownika po raz pierwszy przy użyciu federacyjnego dostawcy tożsamości , takiego jak Google Sign-In, Facebook Login lub Apple.

Możesz także utworzyć nowych użytkowników uwierzytelnionych hasłem w sekcji Uwierzytelnianie konsoli Firebase na stronie Użytkownicy.

Uzyskaj profil użytkownika

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

  • authStateChanges , idTokenChanges i userChanges : Twoi słuchacze otrzymają bieżącego User , lub null , jeśli żaden użytkownik nie jest uwierzytelniony:

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

    Po uruchomieniu aplikacji zdarzenie jest wywoływane po przywróceniu poświadczeń użytkownika (jeśli istnieją) z magazynu lokalnego, co oznacza, że ​​odbiorniki są zawsze wywoływane po zainicjowaniu stanu użytkownika. Następnie za każdym razem, gdy zmieni się stan uwierzytelniania, zostanie zgłoszone nowe zdarzenie ze zaktualizowanym stanem użytkownika.

    Nasłuchując stanu uwierzytelniania, można zbudować interfejs użytkownika, który reaguje na te zmiany stanu uwierzytelniania.

  • Obiekt UserCredential zwrócony przez metody uwierzytelniania ( signIn -): obiekt UserCredential posiada właściwość user z bieżącym 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 aktualnie zalogowany, możesz uzyskać dostęp do User z właściwości currentUser :

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

    currentUser może mieć null z dwóch powodów:

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

Uzyskaj informacje o profilu dostawcy użytkownika

Aby uzyskać informacje o profilu pobrane od dostawców logowania połączonych z użytkownikiem, użyj właściwości providerData . Na 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;
    }
}

Zaktualizuj profil użytkownika

Możesz zaktualizować podstawowe informacje o profilu użytkownika — wyświetlaną nazwę użytkownika i adres URL zdjęcia profilowego — za pomocą metod update . Na przykład:

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

Ustaw adres e-mail użytkownika

Adres e-mail użytkownika można ustawić za pomocą metody updateEmail() . Na przykład:

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

Wyślij użytkownikowi e-mail weryfikacyjny

Możesz wysłać e-mail weryfikujący adres do użytkownika za pomocą metody sendEmailVerification() . Na przykład:

await user?.sendEmailVerification();

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

Możliwe jest również przekazanie stanu za pomocą adresu URL kontynuacji , aby przekierować z powrotem do aplikacji podczas wysyłania e-maila weryfikacyjnego.

Dodatkowo możesz zlokalizować e-mail weryfikacyjny, aktualizując kod języka w instancji Auth przed wysłaniem e-maila. Na przykład:

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

Ustaw hasło użytkownika

Hasło użytkownika można ustawić za pomocą metody updatePassword() . Na przykład:

await user?.updatePassword(newPassword);

Wyślij wiadomość e-mail umożliwiającą zresetowanie hasła

Możesz wysłać wiadomość e-mail umożliwiającą zresetowanie hasła do użytkownika za pomocą metody sendPasswordResetEmail() . Na przykład:

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

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

Możliwe jest również przekazanie stanu za pomocą adresu URL kontynuacji , aby przekierować z powrotem do aplikacji podczas wysyłania wiadomości e-mail dotyczącej resetowania hasła.

Dodatkowo możesz zlokalizować wiadomość e-mail dotyczącą resetowania hasła, aktualizując kod języka w instancji Auth przed wysłaniem wiadomości e-mail. Na przykład:

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

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

Usuń użytkownika

Konto użytkownika można usunąć za pomocą metody delete() . Na przykład:

await user?.delete();

Możesz także usuwać użytkowników z sekcji Uwierzytelnianie konsoli Firebase na stronie Użytkownicy.

Ponownie uwierzytelnij użytkownika

Niektóre czynności związane z bezpieczeństwem — takie jak usunięcie konta , ustawienie podstawowego adresu e-mail i zmiana hasła — wymagają niedawnego zalogowania się użytkownika. Jeśli wykonasz jedną z tych czynności, a użytkownik zalogował się zbyt dawno temu, Akcja kończy się niepowodzeniem i zgłasza FirebaseAuthException z kodem requires-recent-login . W takim przypadku ponownie uwierzytelnij użytkownika, pobierając od niego nowe poświadczenia logowania i przekazując je do reauthenticate . Na przykład:

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

Importuj konta użytkowników

Konta użytkowników z pliku możesz zaimportować do projektu Firebase za pomocą polecenia auth:import interfejsu wiersza polecenia Firebase. Na przykład:

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