Créer un compte utilisateur
Vous disposez des options suivantes pour créer un nouvel utilisateur :
Depuis votre application : créez un nouvel utilisateur dans votre projet Firebase en appelant la méthode
createUserou en connectant un utilisateur pour la première fois à l'aide d'un fournisseur d'identité fédérée, tel que Google Sign-In ou Connexion avec Facebook.Dans la console Firebase : créez un utilisateur authentifié par mot de passe dans l'onglet Sécurité > Authentification > 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 :
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in // ... }
Objective-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 :
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. // ... }
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. Exemple :
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; // ... }
Obtenir les informations de profil spécifiques à un fournisseur pour un utilisateur
Pour obtenir les informations de profil récupérées auprès des fournisseurs de connexion associés à un utilisateur, utilisez la propriété providerData. Exemple :
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];
Modifier le profil d'un utilisateur
Vous pouvez mettre à jour les informations de profil de base d'un utilisateur (son nom à afficher et l'URL de sa photo de profil) avec la classe UserProfileChangeRequest. Exemple :
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) { // ... }];
Définir l'adresse e-mail d'un utilisateur
Vous pouvez définir l'adresse e-mail d'un utilisateur avec la méthode updateEmail.
Exemple :
Swift
Auth.auth().currentUser?.updateEmail(to: email) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
Envoyer un e-mail de validation à un utilisateur
Vous pouvez envoyer un e-mail de validation d'adresse à un utilisateur avec la méthode sendEmailVerificationWithCompletion:. Exemple :
Swift
Auth.auth().currentUser?.sendEmailVerification { error in // ... }
Objective-C
[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) { // ... }];
Vous pouvez personnaliser le modèle d'e-mail utilisé dans l'onglet Modèles > Authentification > Sécurité de la console Firebase. Consultez Modèles d'e-mails dans le Centre d'aide Firebase.
Il est également possible de transmettre l'état via une URL d'action pour rediriger l'utilisateur vers l'application lors de l'envoi d'un e-mail de validation.
Vous pouvez également localiser l'e-mail de validation en mettant à jour le code de langue sur l'instance Auth avant d'envoyer l'e-mail. Exemple :
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];
Définir le mot de passe d'un utilisateur
Vous pouvez définir le mot de passe d'un utilisateur avec la méthode updatePassword. Exemple :
Swift
Auth.auth().currentUser?.updatePassword(to: password) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) { // ... }];
Envoyer un e-mail de réinitialisation du mot de passe
Vous pouvez envoyer un e-mail de réinitialisation du mot de passe à un utilisateur avec la méthode sendPasswordReset. Exemple :
Swift
Auth.auth().sendPasswordReset(withEmail: email) { error in // ... }
Objective-C
[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
Vous pouvez personnaliser le modèle d'e-mail utilisé dans la section "Authentification" de la console Firebase, sur la page "Modèles d'e-mail". Consultez Modèles d'e-mails dans le Centre d'aide Firebase.
Il est également possible de transmettre l'état via une URL d'action pour rediriger l'utilisateur vers l'application lors de l'envoi d'un e-mail de réinitialisation du mot de passe.
Vous pouvez également 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. Exemple :
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];
Vous pouvez également envoyer des e-mails de réinitialisation du mot de passe depuis la console Firebase.
Supprimer un compte utilisateur
Vous pouvez supprimer un compte utilisateur avec la méthode delete. Exemple :
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.
}
}];
Vous pouvez également supprimer des utilisateurs dans la console Firebase, dans l'onglet Sécurité > Authentification > Utilisateurs.
Réauthentifier un utilisateur
Certaines actions sensibles en termes de sécurité, telles que supprimer un compte, définir une adresse e-mail principale et modifier 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, l'action échoue et l'erreur FIRAuthErrorCodeCredentialTooOld s'affiche. Dans ce cas, réauthentifiez l'utilisateur en récupérant de nouveaux identifiants de connexion et en les transmettant à reauthenticate. Exemple :
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.
}
}];
Importer des comptes utilisateur
Vous pouvez importer des comptes utilisateur depuis un fichier dans votre projet Firebase à l'aide de la commande auth:import de la CLI Firebase. Exemple :
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14