Vous pouvez utiliser Firebase Authentication pour permettre à vos utilisateurs de s'authentifier auprès de Firebase à l'aide d'adresses e-mail et de mots de passe.
Requête d'IA pour l'assistance IA
Pour obtenir de l'aide de l'IA, copiez la requête ci-dessous dans votre agent de codage IA (comme Gemini dans Android Studio, Antigravity, Claude Code, Codex et Cursor). Vous pouvez personnaliser la requête et interagir avec votre agent. Pour obtenir des informations détaillées sur l'installation, consultez Compétences agentiques Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase Authentication with email and password authentication in my app.
Avant de commencer
Si ce n'est pas déjà fait, suivez les étapes du guide Premiers pas.
Activez l'adresse e-mail/le mot de passe comme fournisseur de connexion pour votre projet Firebase :
Dans la console Firebase, accédez à Sécurité > Authentification.
Dans l'onglet Méthode de connexion, activez le fournisseur de connexion Adresse e-mail/Mot de passe.
Cliquez sur Enregistrer.
Créer un compte basé sur un mot de passe
Pour créer un compte utilisateur avec un mot de passe, appelez la méthode createUserWithEmailAndPassword() :
try {
final credential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: emailAddress,
password: password,
);
} on FirebaseAuthException catch (e) {
if (e.code == 'weak-password') {
print('The password provided is too weak.');
} else if (e.code == 'email-already-in-use') {
print('The account already exists for that email.');
}
} catch (e) {
print(e);
}
En général, vous effectuez cette opération depuis l'écran d'inscription de votre application. Lorsqu'un nouvel utilisateur s'inscrit à l'aide du formulaire d'inscription de votre application, effectuez toutes les étapes de validation de compte requises par votre application, par exemple en vérifiant que le mot de passe du nouveau compte a été saisi correctement et qu'il répond à vos exigences de complexité.
Si le nouveau compte a bien été créé, l'utilisateur est également connecté. Si vous écoutez les modifications de l'état d'authentification, un nouvel événement sera envoyé à vos écouteurs.
Après avoir créé un compte, vous pouvez valider l'adresse e-mail de l'utilisateur.
Connecter un utilisateur avec une adresse e-mail et un mot de passe
La procédure de connexion d'un utilisateur avec un mot de passe est semblable à celle de création d'un compte. Depuis l'écran de connexion de votre application, appelez signInWithEmailAndPassword() :
try {
final credential = await FirebaseAuth.instance.signInWithEmailAndPassword(
email: emailAddress,
password: password
);
} on FirebaseAuthException catch (e) {
if (e.code == 'user-not-found') {
print('No user found for that email.');
} else if (e.code == 'wrong-password') {
print('Wrong password provided for that user.');
}
}
Étapes suivantes
Lorsqu'un utilisateur crée un compte, celui-ci est stocké dans votre projet Firebase et peut être utilisé pour l'identifier dans toutes les applications de votre projet, quelle que soit la méthode de connexion utilisée.
Dans vos applications, vous pouvez obtenir les informations de profil de base de l'utilisateur à partir de l'objet User. Consultez Gérer les utilisateurs.
Dans vos règles de sécurité Firebase Realtime Database et Cloud Storage, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth et l'utiliser pour contrôler les données auxquelles un utilisateur peut accéder.
Vous pouvez autoriser les utilisateurs à se connecter à votre application à l'aide de plusieurs fournisseurs d'authentification en associant les identifiants du fournisseur d'authentification à un compte utilisateur existant.
Pour déconnecter un utilisateur, appelez signOut() :
await FirebaseAuth.instance.signOut();