Créer un compte utilisateur
Vous pouvez créer un compte utilisateur dans votre projet Firebase en appelant la
createUser
méthode ou en connectant un utilisateur pour la première fois à l'aide d'un fournisseur d'identité fédéré, tel que la connexion Google ou
la connexion Facebook.
Vous pouvez également créer des utilisateurs authentifiés par mot de passe dans la section "Authentication" (Authentification) de la console FirebaseFirebase, sur la page "Users" (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 (par exemple, l'initialisation) lorsque vous obtenez l'utilisateur actuel.
Vous pouvez également obtenir l'utilisateur actuellement connecté à l'aide de la propriété currentUser. Si aucun utilisateur n'est 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 au fournisseur d'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];
Mettre à jour 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) à l'aide de 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 à l'aide de 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 à l'aide de 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 la section "Authentication" (Authentification) de la Firebase console, sur la page "Email Templates" (Modèles d'e-mail). Consultez Modèles d'e-mail dans le Centre d'aide Firebase.
Il est également possible de transmettre un é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 à l'aide de 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 à l'aide de 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 "Authentication" (Authentification) de la Firebase console, sur la page "Email Templates" (Modèles d'e-mail). Consultez Modèles d'e-mail dans le Centre d'aide Firebase.
Il est également possible de transmettre un é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 à l'aide de 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 section "Authentication" (Authentification) de la Firebase console, sur la page "Users" (Utilisateurs).
Réauthentifier un utilisateur
Certaines actions sensibles en termes de 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—nécessitent que l'utilisateur se soit
connecté récemment. 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 obtenant 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 à partir d'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