Benutzer in Firebase verwalten

Erstellen Sie einen Benutzer

Sie erstellen einen neuen Benutzer in Ihrem Firebase-Projekt, indem Sie die Methode createUserWithEmail:password:completion: aufrufen oder einen Benutzer zum ersten Mal mit einem föderierten Identitätsanbieter wie Google Sign-In oder Facebook Login anmelden .

Sie können auch neue passwortauthentifizierte Benutzer im Abschnitt "Authentifizierung" der Firebase-Konsole auf der Seite "Benutzer" erstellen.

Holen Sie sich den aktuell angemeldeten Benutzer

Die empfohlene Methode zum Abrufen des aktuellen Benutzers 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 – wie z. B. bei der Initialisierung –, wenn Sie den aktuellen Benutzer abrufen.

Sie können den aktuell angemeldeten Benutzer auch abrufen, indem Sie die Eigenschaft currentUser . Wenn ein Benutzer nicht angemeldet ist, ist currentUser nil:

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

Holen Sie sich das Profil eines Benutzers

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

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 “. Beispielsweise:

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 Profilbild-URL des Benutzers – mit der FIRUserProfileChangeRequest -Klasse aktualisieren. Beispielsweise:

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 Methode updateEmail:completion: . Beispielsweise:

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 eine Adressbestätigungs-E-Mail an einen Benutzer senden. Beispielsweise:

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 in der Firebase-Hilfe.

Es ist auch möglich, den Status über eine Weiterleitungs- 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. Beispielsweise:

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 Kennwort eines Benutzers fest

Sie können das Kennwort eines Benutzers mit der Methode updatePassword:completion: . Beispielsweise:

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 sendPasswordResetWithEmail:completion: können Sie eine E-Mail zum Zurücksetzen des Passworts an einen Benutzer senden. Beispielsweise:

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 in der Firebase-Hilfe.

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.

Außerdem 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. Beispielsweise:

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

Sie können ein Benutzerkonto mit der Methode deleteWithCompletion löschen. Beispielsweise:

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 Aktion schlägt mit dem Fehler FIRAuthErrorCodeCredentialTooOld fehl. Authentifizieren Sie den Benutzer in diesem Fall erneut, indem Sie neue Anmeldeinformationen vom Benutzer abrufen und die Anmeldeinformationen an reauthenticate . Beispielsweise:

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-Befehlszeilenschnittstelle verwenden. Beispielsweise:

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