Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Gérer les utilisateurs dans Firebase

Créer un utilisateur

Vous créez un nouvel utilisateur dans votre projet Firebase en appelant la createUserWithEmail:password:completion: ou en vous connectant pour la première fois à un utilisateur à l'aide d'un fournisseur d'identité fédéré, tel que Google Sign-In ou Facebook Login .

Vous pouvez également créer de nouveaux utilisateurs authentifiés par mot de passe dans la section Authentification de la console Firebase , sur la page Utilisateurs.

Obtenir l'utilisateur actuellement connecté

La méthode recommandée pour obtenir l'utilisateur actuel consiste à définir un écouteur sur l'objet Auth:

Rapide

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

Objectif c

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

En utilisant un écouteur, vous vous assurez que l'objet Auth n'est pas dans un état intermédiaire (comme l'initialisation) lorsque vous obtenez l'utilisateur actuel.

Vous pouvez également obtenir l'utilisateur actuellement connecté à l'aide de la propriété currentUser . Si un utilisateur n'est pas connecté, currentUser est nul:

Rapide

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

Objectif c

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

Obtenir le profil d'un utilisateur

Pour obtenir les informations de profil d'un utilisateur, utilisez les propriétés d'une instance de FIRUser . Par exemple:

Rapide

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

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

Obtenir des informations de profil spécifiques au fournisseur d'un utilisateur

Pour obtenir les informations de profil récupérées auprès des fournisseurs de connexion liés à un utilisateur, utilisez la propriété providerData . Par exemple:

Rapide

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

Objectif c

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

Mettre à jour le profil d'un utilisateur

Vous pouvez mettre à jour les informations de profil de base d'un utilisateur - le nom d'affichage de l'utilisateur et l'URL de la photo de profil - avec la classe FIRUserProfileChangeRequest . Par exemple:

Rapide

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

Objectif c

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

Définir l'adresse e-mail d'un utilisateur

Vous pouvez définir l'adresse e-mail d'un utilisateur avec la updateEmail:completion: Par exemple:

Rapide

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

Objectif c

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

Envoyer un e-mail de vérification à un utilisateur

Vous pouvez envoyer un e-mail de vérification d'adresse à un utilisateur avec la méthode sendEmailVerificationWithCompletion: . Par exemple:

Rapide

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

Objectif c

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

Vous pouvez personnaliser le modèle de courrier électronique utilisé dans la section Authentification de la console Firebase , sur la page Modèles de courrier électronique. Voir Modèles d'e - mail dans le centre d'aide Firebase.

Il est également possible de transmettre l'état via une URL de poursuite pour rediriger vers l'application lors de l'envoi d'un e-mail de vérification.

De plus, vous pouvez localiser l'e-mail de vérification en mettant à jour le code de langue sur l'instance Auth avant d'envoyer l'e-mail. Par exemple:

Rapide

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

Objectif c

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

Définir le mot de passe d'un utilisateur

Vous pouvez définir le mot de passe d'un utilisateur avec la updatePassword:completion: Par exemple:

Rapide

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

Objectif c

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

Envoyer un e-mail de réinitialisation de mot de passe

Vous pouvez envoyer un e-mail de réinitialisation de mot de passe à un utilisateur avec la sendPasswordResetWithEmail:completion: Par exemple:

Rapide

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

Objectif c

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

Vous pouvez personnaliser le modèle de courrier électronique utilisé dans la section Authentification de la console Firebase , sur la page Modèles de courrier électronique. Voir Modèles d'e - mail dans le centre d'aide Firebase.

Il est également possible de transmettre l'état via une URL de poursuite pour rediriger vers l'application lors de l'envoi d'un e-mail de réinitialisation de mot de passe.

En outre, vous pouvez localiser l'e-mail de réinitialisation du mot de passe en mettant à jour le code de langue sur l'instance Auth avant d'envoyer l'e-mail. Par exemple:

Rapide

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

Objectif c

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

Vous pouvez également envoyer des e-mails de réinitialisation de mot de passe depuis la console Firebase.

Supprimer un utilisateur

Vous pouvez supprimer un compte utilisateur avec la méthode deleteWithCompletion . Par exemple:

Rapide

 let user = Auth.auth().currentUser

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

Objectif c

 FIRUser *user = [FIRAuth auth].currentUser;

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

Vous pouvez également supprimer des utilisateurs de la section Authentification de la console Firebase , sur la page Utilisateurs.

Ré-authentifier un utilisateur

Certaines actions sensibles à la sécurité, telles que la suppression d'un compte , la définition d'une adresse e-mail principale et la modification d'un mot de passe, exigent que l'utilisateur se soit récemment connecté. Si vous effectuez l'une de ces actions et que l'utilisateur s'est connecté il y a trop longtemps, le L'action échoue avec l'erreur FIRAuthErrorCodeCredentialTooOld . Lorsque cela se produit, ré-authentifiez l'utilisateur en obtenant de nouvelles informations de connexion de l'utilisateur et en transmettant les informations d'identification pour reauthenticate à reauthenticate . Par exemple:

Rapide

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

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

Importer des comptes d'utilisateurs

Vous pouvez importer des comptes utilisateur à partir d'un fichier dans votre projet Firebase à l'aide de la commande auth:import la CLI Firebase. Par exemple:

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