Verwalten Sie Benutzer in Firebase

Erstellen Sie einen Benutzer

Sie erstellen einen neuen Benutzer in Ihrem Firebase-Projekt, indem Sie die Methode createUser 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:

Schnell

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

Ziel c

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

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 mithilfe der Eigenschaft currentUser abrufen. Wenn ein Benutzer nicht angemeldet ist, ist currentUser gleich Null:

Schnell

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

Ziel c

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

Rufen Sie das Profil eines Benutzers ab

Um die Profilinformationen eines Benutzers abzurufen, verwenden Sie die Eigenschaften einer Instanz von FIRUser . Zum Beispiel:

Schnell

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 += " "
  }
  // ...
}

Ziel 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;
  // ...
}

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 Eigenschaft providerData . Zum Beispiel:

Schnell

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

Ziel c

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

Aktualisieren Sie das Profil eines Benutzers

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

Schnell

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

Ziel c

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

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:

Schnell

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

Ziel c

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

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

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

Schnell

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

Ziel c

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

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.

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

Darüber hinaus können Sie die Bestätigungs-E-Mail lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

Schnell

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

Ziel c

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

Legen Sie das Passwort eines Benutzers fest

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

Schnell

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

Ziel c

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

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

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

Schnell

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

Ziel c

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

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.

Es ist auch möglich, den Status über eine Fortsetzungs-URL zu übergeben, um beim Senden einer E-Mail zum Zurücksetzen des Passworts zurück zur App umzuleiten.

Darüber hinaus können Sie die E-Mail zum Zurücksetzen des Passworts lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

Schnell

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

Ziel c

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

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

Einen Benutzer löschen

Mit der delete können Sie ein Benutzerkonto löschen. Zum Beispiel:

Schnell

let user = Auth.auth().currentUser

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

Ziel c

FIRUser *user = [FIRAuth auth].currentUser;

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

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 Die Aktion schlägt mit dem Fehler FIRAuthErrorCodeCredentialTooOld fehl. Wenn dies geschieht, authentifizieren Sie den Benutzer erneut, indem Sie neue Anmeldeinformationen vom Benutzer erhalten und diese an reauthenticate übergeben. Zum Beispiel:

Schnell

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.
  }
}

Ziel 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.
  }
}];

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