Verwalten Sie Benutzer in Firebase

Erstellen Sie einen Benutzer

Sie erstellen einen neuen Benutzer in Ihrem Firebase-Projekt, indem Sie die Methode CreateUserWithEmailAndPassword aufrufen oder einen Benutzer zum ersten Mal über einen föderierten Identitätsanbieter wie Google Sign-In oder Facebook Login anmelden.

Sie können auch neue passwortauthentifizierte Benutzer über den Abschnitt „Authentifizierung“ der Firebase-Konsole auf der Seite „Benutzer“ erstellen.

Rufen Sie den aktuell angemeldeten Benutzer ab

Der empfohlene Weg, den aktuellen Benutzer abzurufen, besteht darin, einen Listener für das Auth-Objekt festzulegen:

Firebase.Auth.FirebaseAuth auth;
Firebase.Auth.FirebaseUser user;

// Handle initialization of the necessary firebase modules:
void InitializeFirebase() {
  Debug.Log("Setting up Firebase Auth");
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

// Track state changes of the auth object.
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
    if (!signedIn && user != null) {
      Debug.Log("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      Debug.Log("Signed in " + user.UserId);
    }
  }
}

// Handle removing subscription and reference to the Auth instance.
// Automatically called by a Monobehaviour after Destroy is called on it.
void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

Durch die Verwendung eines Listeners stellen Sie sicher, dass sich das Auth-Objekt nicht in einem Zwischenzustand befindet (z. B. Initialisierung), wenn Sie den aktuellen Benutzer erhalten.

Sie können den aktuell angemeldeten Benutzer auch abrufen, indem Sie CurrentUser aufrufen. Wenn ein Benutzer nicht angemeldet ist, gibt CurrentUser null zurück. Wenn ein Benutzer abgemeldet ist, gibt IsValid() des Benutzers „false“ zurück.

Behalten Sie die Anmeldeinformationen eines Benutzers bei

Die Anmeldeinformationen des Benutzers werden im lokalen Schlüsselspeicher gespeichert, nachdem ein Benutzer angemeldet ist. Der lokale Cache der Benutzeranmeldeinformationen kann durch Abmelden des Benutzers gelöscht werden. Der Keystore ist plattformspezifisch:

Rufen Sie das Profil eines Benutzers ab

Um die Profilinformationen eines Benutzers abzurufen, verwenden Sie die Zugriffsmethoden einer Instanz von Firebase.Auth.FirebaseUser . Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  string name = user.DisplayName;
  string email = user.Email;
  System.Uri photo_url = user.PhotoUrl;
  // The user's Id, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server, if you
  // have one; use User.TokenAsync() instead.
  string uid = user.UserId;
}

Rufen Sie die anbieterspezifischen Profilinformationen eines Benutzers ab

Um die Profilinformationen abzurufen, die von den mit einem Benutzer verknüpften Anmeldeanbietern abgerufen werden, verwenden Sie die ProviderData Methode. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  foreach (var profile in user.ProviderData) {
    // Id of the provider (ex: google.com)
    string providerId = profile.ProviderId;

    // UID specific to the provider
    string uid = profile.UserId;

    // Name, email address, and profile photo Url
    string name = profile.DisplayName;
    string email = profile.Email;
    System.Uri photoUrl = profile.PhotoUrl;
  }
}

Aktualisieren Sie das Profil eines Benutzers

Sie können die grundlegenden Profilinformationen eines Benutzers – den Anzeigenamen und die Profilfoto-URL des Benutzers – mit der UpdateUserProfile Methode aktualisieren. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  Firebase.Auth.UserProfile profile = new Firebase.Auth.UserProfile {
    DisplayName = "Jane Q. User",
    PhotoUrl = new System.Uri("https://example.com/jane-q-user/profile.jpg"),
  };
  user.UpdateUserProfileAsync(profile).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdateUserProfileAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdateUserProfileAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User profile updated successfully.");
  });
}

Legen Sie die E-Mail-Adresse eines Benutzers fest

Sie können die E-Mail-Adresse eines Benutzers mit der UpdateEmail Methode festlegen. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.UpdateEmailAsync("user@example.com").ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdateEmailAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdateEmailAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User email updated successfully.");
  });
}

Senden Sie einem Benutzer eine Bestätigungs-E-Mail

Mit der SendEmailVerification Methode können Sie eine E-Mail zur Adressbestätigung an einen Benutzer senden. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.SendEmailVerificationAsync().ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("SendEmailVerificationAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("SendEmailVerificationAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Email sent successfully.");
  });
}

Sie können die E-Mail-Vorlage, die im Abschnitt „Authentifizierung“ der Firebase-Konsole verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Siehe E-Mail-Vorlagen im Firebase-Hilfecenter.

Legen Sie das Passwort eines Benutzers fest

Sie können das Passwort eines Benutzers mit der UpdatePassword Methode festlegen. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
string newPassword = "SOME-SECURE-PASSWORD";
if (user != null) {
  user.UpdatePasswordAsync(newPassword).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdatePasswordAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdatePasswordAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Password updated successfully.");
  });
}

Senden Sie eine E-Mail zum Zurücksetzen des Passworts

Mit der Methode SendPasswordResetEmail können Sie eine E-Mail zum Zurücksetzen des Passworts an einen Benutzer senden. Zum Beispiel:

string emailAddress = "user@example.com";
if (user != null) {
  auth.SendPasswordResetEmailAsync(emailAddress).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("SendPasswordResetEmailAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("SendPasswordResetEmailAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Password reset email sent successfully.");
  });
}

Sie können die E-Mail-Vorlage, die im Abschnitt „Authentifizierung“ der Firebase-Konsole verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Siehe E-Mail-Vorlagen im Firebase-Hilfecenter.

Sie können E-Mails zum Zurücksetzen des Passworts auch über die Firebase-Konsole senden.

Einen Benutzer löschen

Sie können ein Benutzerkonto mit der Methode Delete löschen. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.DeleteAsync().ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("DeleteAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("DeleteAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User deleted successfully.");
  });
}

Sie können Benutzer auch im Abschnitt „Authentifizierung“ der Firebase-Konsole auf der Seite „Benutzer“ löschen.

Authentifizieren Sie einen Benutzer erneut

Einige sicherheitsrelevante Aktionen – wie das Löschen eines Kontos , das Festlegen einer primären E-Mail-Adresse und das Ändern eines Passworts – erfordern, dass sich der Benutzer kürzlich angemeldet hat. Wenn Sie eine dieser Aktionen ausführen und der Benutzer sich vor zu langer Zeit angemeldet hat, wird die Aktion schlägt fehl.

Wenn dies geschieht, authentifizieren Sie den Benutzer erneut, indem Sie neue Anmeldeinformationen vom Benutzer erhalten und diese an Reauthenticate übergeben. Zum Beispiel:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
Firebase.Auth.Credential credential =
    Firebase.Auth.EmailAuthProvider.GetCredential("user@example.com", "password1234");

if (user != null) {
  user.ReauthenticateAsync(credential).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("ReauthenticateAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("ReauthenticateAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User reauthenticated successfully.");
  });
}

Benutzerkonten importieren

Sie können Benutzerkonten aus einer Datei in Ihr Firebase-Projekt importieren, indem Sie den Befehl auth:import der Firebase-CLI verwenden. Zum Beispiel:

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