Créer un compte utilisateur
Pour créer un utilisateur dans votre projet Firebase, appelez la méthode CreateUserWithEmailAndPassword
ou connectez un utilisateur pour la première fois à l'aide d'un fournisseur d'identité fédérée, tel que Google Sign-In ou Facebook Login.
Vous pouvez également créer des 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 Objet Auth:
Firebase.Auth.FirebaseAuth auth; Firebase.Auth.FirebaseUser user; // Handle initialization of the necessary firebase modules: void InitializeFirebase() { Debug.Log("Setting up Firebase Auth"); auth = Firebase.Auth.FirebaseAuth.DefaultInstance; auth.StateChanged += AuthStateChanged; AuthStateChanged(this, null); } // Track state changes of the auth object. void AuthStateChanged(object sender, System.EventArgs eventArgs) { if (auth.CurrentUser != user) { bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null; if (!signedIn && user != null) { Debug.Log("Signed out " + user.UserId); } user = auth.CurrentUser; if (signedIn) { Debug.Log("Signed in " + user.UserId); } } } // Handle removing subscription and reference to the Auth instance. // Automatically called by a Monobehaviour after Destroy is called on it. void OnDestroy() { auth.StateChanged -= AuthStateChanged; auth = null; }
En utilisant un écouteur, vous vous assurez que l'objet Auth ne se trouve pas dans une classe intermédiaire de l'utilisateur, comme l'initialisation, lorsque vous obtenez l'utilisateur actuel.
Vous pouvez également obtenir l'utilisateur actuellement connecté en appelant CurrentUser
. Si un utilisateur n'est pas connecté, CurrentUser
renvoie la valeur "null". Si un utilisateur est déconnecté, la valeur IsValid()
de l'utilisateur renvoie la valeur false.
Persister les identifiants d'un utilisateur
Les identifiants de l'utilisateur seront stockés dans le keystore local une fois qu'il est connecté. Le cache local contenant les identifiants utilisateur peut être supprimé en signant l'utilisateur. Le keystore est spécifique à la plate-forme:
- Plates-formes Apple : Services Keychain
- Android : Android Keystore
- Windows: API Credential Management
- OS X : Services Keychain.
- Linux : libsecret, que l'utilisateur doit avoir installé.
Obtenir le profil d'un utilisateur
Pour obtenir les informations de profil d'un utilisateur, utilisez les méthodes d'accesseur d'une instance de
Firebase.Auth.FirebaseUser
Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // 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 User.TokenAsync() instead. string uid = user.UserId; }
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 méthode ProviderData
. Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { foreach (var profile in user.ProviderData) { // Id of the provider (ex: google.com) string providerId = profile.ProviderId; // UID specific to the provider string uid = profile.UserId; // Name, email address, and profile photo Url string name = profile.DisplayName; string email = profile.Email; System.Uri photoUrl = profile.PhotoUrl; } }
Mettre à jour le profil d'un utilisateur
Vous pouvez mettre à jour les informations de base du profil d'un utilisateur, à savoir son nom à afficher
et l'URL de la photo de profil, à l'aide de la méthode UpdateUserProfile
. Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { Firebase.Auth.UserProfile profile = new Firebase.Auth.UserProfile { DisplayName = "Jane Q. User", PhotoUrl = new System.Uri("https://example.com/jane-q-user/profile.jpg"), }; user.UpdateUserProfileAsync(profile).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdateUserProfileAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdateUserProfileAsync encountered an error: " + task.Exception); return; } Debug.Log("User profile updated successfully."); }); }
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 :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.UpdateEmailAsync("user@example.com").ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdateEmailAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdateEmailAsync encountered an error: " + task.Exception); return; } Debug.Log("User email updated successfully."); }); }
Envoyer un e-mail de validation à un utilisateur
Vous pouvez envoyer un e-mail de validation de l'adresse à un utilisateur disposant du
SendEmailVerification
. Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.SendEmailVerificationAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SendEmailVerificationAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SendEmailVerificationAsync encountered an error: " + task.Exception); return; } Debug.Log("Email sent successfully."); }); }
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-mails". Consultez la section Modèles d'e-mails dans le centre d'aide Firebase.
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 :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; string newPassword = "SOME-SECURE-PASSWORD"; if (user != null) { user.UpdatePasswordAsync(newPassword).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdatePasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdatePasswordAsync encountered an error: " + task.Exception); return; } Debug.Log("Password updated successfully."); }); }
Envoyer un e-mail de réinitialisation du mot de passe
Vous pouvez envoyer un e-mail de réinitialisation de mot de passe à un utilisateur à l'aide de la méthode SendPasswordResetEmail
. Exemple :
string emailAddress = "user@example.com"; if (user != null) { auth.SendPasswordResetEmailAsync(emailAddress).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SendPasswordResetEmailAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SendPasswordResetEmailAsync encountered an error: " + task.Exception); return; } Debug.Log("Password reset email sent successfully."); }); }
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 la section Modèles d'e-mails dans le centre d'aide Firebase.
Vous pouvez également envoyer des e-mails de réinitialisation du mot de passe à partir de la console Firebase.
Supprimer un compte utilisateur
Vous pouvez supprimer un compte utilisateur à l'aide de la méthode Delete
. Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.DeleteAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("DeleteAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("DeleteAsync encountered an error: " + task.Exception); return; } Debug.Log("User deleted successfully."); }); }
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 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 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.
Dans ce cas, réauthentifiez l'utilisateur en récupérant de nouveaux identifiants de connexion et en les transmettant à Reauthenticate
. Exemple :
Firebase.Auth.FirebaseUser user = auth.CurrentUser; // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential("user@example.com", "password1234"); if (user != null) { user.ReauthenticateAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("ReauthenticateAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("ReauthenticateAsync encountered an error: " + task.Exception); return; } Debug.Log("User reauthenticated successfully."); }); }
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