Nutzer in Firebase verwalten

Nutzer erstellen

Sie erstellen einen neuen Nutzer in Ihrem Firebase-Projekt, indem Sie die Methode createUser aufrufen oder einen Nutzer zum ersten Mal über einen Anbieter für föderierte Identitäten wie Google Sign-In oder Facebook Login anmelden.

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

Derzeit angemeldeten Nutzer abrufen

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

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Mit einem Listener wird sichergestellt, dass sich das Auth-Objekt nicht in einem Zwischenstatus befindet, z. B. in der Initialisierung, wenn Sie den aktuellen Nutzer abrufen.

Sie können den aktuell angemeldeten Nutzer auch über die currentUser abrufen. Property. Wenn ein Nutzer nicht angemeldet ist, ist currentUser gleich null:

Swift

if Auth.auth().currentUser != nil {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

Objective-C

if ([FIRAuth auth].currentUser) {
  // User is signed in.
  // ...
} else {
  // No user is signed in.
  // ...
}

Nutzerprofil abrufen

Um die Profilinformationen eines Nutzers abzurufen, verwende die Properties einer Instanz von FIRUser. Beispiel:

Swift

let user = Auth.auth().currentUser
if let user = user {
  // 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 getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

FIRUser *user = [FIRAuth auth].currentUser;
if (user) {
  // 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 getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

Anbieterspezifische Profilinformationen eines Nutzers abrufen

Verwenden Sie die Property providerData, um die Profilinformationen abzurufen, die von den Anmeldeanbietern abgerufen wurden, die mit einem Nutzer verknüpft sind. Beispiel:

Swift

let userInfo = Auth.auth().currentUser?.providerData[indexPath.row]
cell?.textLabel?.text = userInfo?.providerID
// Provider-specific UID
cell?.detailTextLabel?.text = userInfo?.uid

Objective-C

id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row];
cell.textLabel.text = [userInfo providerID];
// Provider-specific UID
cell.detailTextLabel.text = [userInfo uid];

Nutzerprofil aktualisieren

Mit der UserProfileChangeRequest-Klasse kannst du die grundlegenden Profilinformationen eines Nutzers aktualisieren, also seinen Anzeigenamen und die URL seines Profilbilds. Beispiel:

Swift

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { error in
  // ...
}

Objective-C

FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest];
changeRequest.displayName = userInput;
[changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

E-Mail-Adresse eines Nutzers festlegen

Sie können die E-Mail-Adresse eines Nutzers mit der Methode updateEmail festlegen. Beispiel:

Swift

Auth.auth().currentUser?.updateEmail(to: email) { error in
  // ...
}

Objective-C

[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

Bestätigungs-E-Mail an Nutzer senden

Sie können eine E-Mail zur Bestätigung der Adresse an einen Nutzer mit der sendEmailVerificationWithCompletion:-Methode. Beispiel:

Swift

Auth.auth().currentUser?.sendEmailVerification { error in
  // ...
}

Objective-C

[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) {
  // ...
}];

Sie können die E-Mail-Vorlage anpassen, die im Abschnitt „Authentifizierung“ von in der Firebase-Konsole auf der Seite „E-Mail-Vorlagen“. Weitere Informationen finden Sie in der Firebase-Hilfe unter E-Mail-Vorlagen.

Es ist auch möglich, den Status über eine Continue-URL zu übergeben, um beim Senden einer Bestätigungs-E-Mail zur App zurückzuleiten.

Sie können die Bestätigungs-E-Mail auch lokalisieren, indem Sie die Sprache auf der Auth-Instanz, bevor Sie die E-Mail senden. Beispiel:

Swift

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

Objective-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

Passwort eines Nutzers festlegen

Sie können das Passwort eines Nutzers mit der Methode updatePassword festlegen. Beispiel:

Swift

Auth.auth().currentUser?.updatePassword(to: password) { error in
  // ...
}

Objective-C

[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

E-Mail zum Zurücksetzen des Passworts senden

Sie können eine E-Mail zum Zurücksetzen des Passworts an einen Nutzer mit der sendPasswordReset-Methode. Beispiel:

Swift

Auth.auth().sendPasswordReset(withEmail: email) { error in
  // ...
}

Objective-C

[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) {
  // ...
}];

Sie können die E-Mail-Vorlage anpassen, die im Abschnitt „Authentifizierung“ von in der Firebase-Konsole auf der Seite „E-Mail-Vorlagen“. Weitere Informationen finden Sie unter E-Mail-Vorlagen in Firebase-Hilfe.

Es ist auch möglich, den Status über eine Continue-URL zu übergeben, um beim Senden einer E-Mail zur Passwortzurücksetzung zur App zurückzuleiten.

Außerdem kannst du die E-Mail zum Zurücksetzen des Passworts lokalisieren, indem du die Sprache aktualisierst. auf der Auth-Instanz, bevor Sie die E-Mail senden. Beispiel:

Swift

Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()

Objective-C

[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];

Du kannst auch E-Mails zum Zurücksetzen des Passworts über die Firebase-Konsole senden.

Nutzer löschen

Sie können ein Nutzerkonto mit der Methode delete löschen. Beispiel:

Swift

let user = Auth.auth().currentUser

user?.delete { error in
  if let error = error {
    // An error happened.
  } else {
    // Account deleted.
  }
}

Objective-C

FIRUser *user = [FIRAuth auth].currentUser;

[user deleteWithCompletion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // Account deleted.
  }
}];

Sie können Nutzer auch über den Abschnitt „Authentifizierung“ der Firebase auf der Seite „Nutzer“

Nutzer noch einmal 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 vor zu langer Zeit angemeldet hat, schlägt die Aktion mit dem Fehler FIRAuthErrorCodeCredentialTooOld fehl. Authentifizieren Sie den Nutzer dann noch einmal, indem Sie neue Anmeldedaten vom Nutzer abrufen und an reauthenticate übergeben. Beispiel:

Swift

let user = Auth.auth().currentUser
var credential: AuthCredential

// Prompt the user to re-provide their sign-in credentials

user?.reauthenticate(with: credential) { error in
  if let error = error {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}

Objective-C

FIRUser *user = [FIRAuth auth].currentUser;
FIRAuthCredential *credential;

// Prompt the user to re-provide their sign-in credentials

[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
  if (error) {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}];

Nutzerkonten importieren

Sie können Nutzerkonten mit dem Befehl auth:import der Firebase CLI aus einer Datei in Ihr Firebase-Projekt importieren. Beispiel:

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