Nutzer in Firebase verwalten

Nutzer erstellen

Sie erstellen einen neuen Nutzer in Ihrem Firebase-Projekt, indem Sie die Methode CreateUserWithEmailAndPassword oder einen Nutzer zum ersten Mal mit einer föderierten Identität anmelden wie Google Log-in oder Facebook-Anmeldung.

Sie können neue passwortauthentifizierte Nutzer auch über die Seite „Nutzer“ im Bereich „Authentifizierung“ der Firebase-Konsole erstellen.

Aktuell angemeldeten Nutzer abrufen

Die empfohlene Methode zum Abrufen des aktuellen Nutzers besteht darin, einen Listener auf der Auth-Objekt:

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 Zwischen- z. B. Initialisierung, wenn Sie den aktuellen Nutzer abrufen.

Sie können den aktuell angemeldeten Nutzer auch über CurrentUser abrufen. Wenn ein Nutzer nicht angemeldet ist, wird für CurrentUser „null“ zurückgegeben. Wenn ein Nutzer abgemeldet ist, wird für IsValid() des Nutzers „false“ zurückgegeben.

Anmeldedaten eines Nutzers speichern

Die Anmeldedaten des Nutzers werden im lokalen Schlüsselspeicher gespeichert, nachdem ein Nutzer ist angemeldet. Der lokale Cache der Nutzeranmeldedaten kann gelöscht werden, indem sich der Nutzer abmeldet. Der Schlüsselspeicher ist plattformspezifisch:

Nutzerprofil abrufen

Verwenden Sie zum Abrufen der Profilinformationen eines Nutzers die Zugriffsmethoden einer Instanz von Firebase.Auth.FirebaseUser 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;
}

Anbieterspezifische Profilinformationen eines Nutzers abrufen

Wenn Sie die Profilinformationen von den mit einem verwenden Sie die Methode ProviderData. 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;
  }
}

Nutzerprofil aktualisieren

Sie können die grundlegenden Profilinformationen eines Nutzers aktualisieren, also den Anzeigenamen des Nutzers und Profilfotos mit der Methode UpdateUserProfile. 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.");
  });
}

E-Mail-Adresse eines Nutzers festlegen

Sie können die E-Mail-Adresse eines Nutzers mit der Methode UpdateEmail festlegen. 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.");
  });
}

Bestätigungs-E-Mail an Nutzer senden

Sie können eine E-Mail zur Bestätigung der Adresse an einen Nutzer mit der SendEmailVerification-Methode. 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 Console verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Weitere Informationen finden Sie in der Firebase-Hilfe unter E-Mail-Vorlagen.

Passwort eines Nutzers festlegen

Sie können das Passwort eines Nutzers mit der Methode UpdatePassword festlegen. 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.");
  });
}

E-Mail zum Zurücksetzen des Passworts senden

Du kannst eine E-Mail zum Zurücksetzen des Passworts an einen Nutzer mit der SendPasswordResetEmail senden. . 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 Console verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Weitere Informationen finden Sie unter E-Mail-Vorlagen in Firebase-Hilfe.

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

Nutzer löschen

Sie können ein Nutzerkonto mit der Methode Delete löschen. 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 Nutzer auch in der Firebase Console auf der Seite „Nutzer“ im Abschnitt „Authentifizierung“ löschen.

Nutzer neu authentifizieren

Einige sicherheitsrelevante Aktionen, z. B. Löschen eines Kontos, Festlegen einer primären E-Mail-Adresse und Passwort ändern: Der Nutzer muss angemeldet sind. Wenn Sie eine dieser Aktionen ausführen und sich der Nutzer angemeldet hat allzu lange her ist, schlägt die Aktion fehl.

Nutzer in diesem Fall durch Abrufen neuer Anmeldedaten noch einmal authentifizieren vom Nutzer und übergibt die Anmeldedaten an Reauthenticate. 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.");
  });
}

Nutzerkonten importieren

Sie können Nutzerkonten aus einer Datei in Ihr Firebase-Projekt importieren, indem Sie die Den Befehl auth:import der Firebase CLI Beispiel:

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