Vous pouvez utiliser Firebase Authentication pour permettre aux utilisateurs de se connecter à votre application à l'aide d'une ou de plusieurs méthodes de connexion, y compris la connexion par adresse e-mail et mot de passe, et des fournisseurs d'identité fédérés tels que Google Sign-In et Facebook Login. Ce tutoriel vous aide à faire vos premiers pas avec Firebase Authentication en vous montrant comment ajouter la connexion par adresse e-mail et mot de passe à votre application.
Ajouter et initialiser le SDK Authentication
Si ce n'est pas déjà fait, installez le SDK JS Firebase et initialisez Firebase.
Ajoutez le SDK JS Firebase Authentication et initialisez Firebase Authentication :
Web
import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Firebase Authentication and get a reference to the service const auth = getAuth(app);
Web
import firebase from "firebase/compat/app"; import "firebase/compat/auth"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Firebase Authentication and get a reference to the service const auth = firebase.auth();
(Facultatif) Prototyper et tester avec Firebase Local Emulator Suite
Avant de parler de la façon dont votre application authentifie les utilisateurs, présentons un ensemble d'outils que vous pouvez utiliser pour prototyper et tester les fonctionnalités de Authentication : Firebase Local Emulator Suite. Si vous hésitez entre plusieurs techniques et fournisseurs d'authentification, que vous testez différents modèles de données avec des données publiques et privées à l'aide de Authentication et Firebase Security Rules, ou que vous créez des prototypes de conception d'UI de connexion, il peut être judicieux de travailler localement sans déployer de services actifs.
Un émulateur Authentication fait partie de la Local Emulator Suite, qui permet à votre application d'interagir avec le contenu et la configuration de la base de données émulée, ainsi qu'avec les ressources de votre projet émulé (fonctions, autres bases de données et règles de sécurité).
L'utilisation de l'émulateur Authentication ne nécessite que quelques étapes :
- Ajouter une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
- Depuis la racine du répertoire de votre projet local, exécutez
firebase emulators:start. - Utilisez l'interface utilisateur Local Emulator Suite pour le prototypage interactif ou l'API REST de l'émulateur Authentication pour les tests non interactifs.
Un guide détaillé est disponible sur la page Connecter votre application à l'émulateur Authentication. Pour en savoir plus, consultez la présentation de Local Emulator Suite.
Voyons maintenant comment authentifier les utilisateurs.
Inscrire de nouveaux utilisateurs
Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre application à l'aide de leur adresse e-mail et d'un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez l'adresse e-mail et le mot de passe qu'il a fournis, puis transmettez-les à la méthode createUserWithEmailAndPassword :
Web
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed up const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web
firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
Connecter des utilisateurs existants
Créez un formulaire permettant aux utilisateurs existants de se connecter à l'aide de leur adresse e-mail et de leur mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la méthode signInWithEmailAndPassword :
Web
import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; });
Web
firebase.auth().signInWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; });
Définir un observateur d'état d'authentification et obtenir les données utilisateur
Pour chaque page de votre application nécessitant des informations sur l'utilisateur connecté, associez un observateur à l'objet d'authentification global. Cet observateur est appelé chaque fois que l'état de connexion de l'utilisateur change.
Associez l'observateur à l'aide de la méthode onAuthStateChanged. Lorsqu'un utilisateur se connecte, vous pouvez obtenir des informations le concernant dans l'observateur.
Web
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
Étapes suivantes
Découvrez comment ajouter la compatibilité avec d'autres fournisseurs d'identité et comptes d'invités anonymes :