Associer votre application à Firebase
Installez et initialisez les SDK Firebase pour Flutter si ce n'est pas déjà fait.
Ajouter Firebase Authentication à votre application
À la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in :
flutter pub add firebase_authUne fois cette étape effectuée, recréez votre application Flutter :
flutter runImportez le plug-in dans votre code Dart :
import 'package:firebase_auth/firebase_auth.dart';
Pour utiliser un fournisseur d'authentification, vous devez l'activer dans la console Firebase. Accédez à la page "Méthode de connexion" dans la section Firebase Authentication pour activer la connexion par e-mail/mot de passe et tous les autres fournisseurs d'identité que vous souhaitez pour votre application.
(Facultatif) Prototyper et tester avec la suite d'émulateurs locaux Firebase
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 d'authentification : la suite d'émulateurs locaux Firebase. Si vous hésitez entre différentes techniques et différents fournisseurs d'authentification, que vous souhaitez tester différents modèles de données avec des données publiques et privées à l'aide d'Authentication et des règles de sécurité Firebase, ou que vous voulez prototyper des conceptions d'UI de connexion, il peut être judicieux de travailler en local sans déployer de services en direct.
Un émulateur Authentication fait partie de la suite d'émulateurs locaux, 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é) si vous le souhaitez.
L'utilisation de l'émulateur Authentication ne nécessite que quelques étapes :
Ajoutez une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
À partir de 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.
Appelez
useAuthEmulator()pour spécifier l'adresse et le port de l'émulateur :Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
Un guide détaillé est disponible sur la page Connecter votre application à l'émulateur Authentication. Pour en savoir plus, consultez la présentation de la Local Emulator Suite.
Voyons maintenant comment authentifier les utilisateurs.
Vérifier l'état d'authentification actuel
Firebase Auth fournit de nombreuses méthodes et utilitaires qui vous permettent d'intégrer une authentification sécurisée à votre application Flutter, qu'elle soit nouvelle ou existante. Dans de nombreux cas, vous devrez connaître l'état d'authentification de votre utilisateur, par exemple s'il est connecté ou déconnecté.
Firebase Auth vous permet de vous abonner en temps réel à cet état via un Stream.
Une fois appelé, le flux fournit un événement immédiat de l'état d'authentification actuel de l'utilisateur, puis fournit des événements ultérieurs chaque fois que l'état d'authentification change.
Il existe trois méthodes pour écouter les changements d'état d'authentification :
authStateChanges()
Pour vous abonner à ces modifications, appelez la méthode authStateChanges() sur votre instance FirebaseAuth :
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Des événements sont déclenchés lorsque les actions suivantes se produisent :
- Juste après l'enregistrement de l'écouteur.
- Lorsqu'un utilisateur est connecté.
- Lorsque l'utilisateur actuel est déconnecté.
idTokenChanges()
Pour vous abonner à ces modifications, appelez la méthode idTokenChanges() sur votre instance FirebaseAuth :
FirebaseAuth.instance
.idTokenChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Des événements sont déclenchés lorsque les actions suivantes se produisent :
- Juste après l'enregistrement de l'écouteur.
- Lorsqu'un utilisateur est connecté.
- Lorsque l'utilisateur actuel est déconnecté.
- Lorsque le jeton de l'utilisateur actuel change.
userChanges()
Pour vous abonner à ces modifications, appelez la méthode userChanges() sur votre instance FirebaseAuth :
FirebaseAuth.instance
.userChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
Des événements sont déclenchés lorsque les actions suivantes se produisent :
- Juste après l'enregistrement de l'écouteur.
- Lorsqu'un utilisateur est connecté.
- Lorsque l'utilisateur actuel est déconnecté.
- Lorsque le jeton de l'utilisateur actuel change.
- Lorsque les méthodes suivantes fournies par
FirebaseAuth.instance.currentUsersont appelées :reload()unlink()updateEmail()updatePassword()updatePhoneNumber()updateProfile()
Enregistrer l'état de l'authentification
Les SDK Firebase pour toutes les plates-formes offrent une assistance prête à l'emploi pour garantir que l'état d'authentification de vos utilisateurs est conservé lors des redémarrages d'application ou des rechargements de page.
Sur les plates-formes natives telles qu'Android et iOS, ce comportement n'est pas configurable et l'état d'authentification de l'utilisateur sera conservé sur l'appareil entre les redémarrages de l'application. L'utilisateur peut effacer les données mises en cache des applications à l'aide des paramètres de l'appareil, ce qui effacera tout état existant stocké.
Sur les plates-formes Web, l'état d'authentification de l'utilisateur est stocké dans IndexedDB.
Vous pouvez modifier la persistance pour stocker les données dans le stockage local à l'aide de Persistence.LOCAL.
Si nécessaire, vous pouvez modifier ce comportement par défaut pour ne conserver l'état d'authentification que pour la session en cours, ou pas du tout. Pour configurer ces paramètres, appelez la méthode suivante : FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);.
Vous pouvez toujours mettre à jour la persistance de chaque instance Auth à l'aide de setPersistence(Persistence.NONE).
// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);
Étapes suivantes
Consultez les guides sur la connexion et l'inscription des utilisateurs avec les services d'identité et d'authentification compatibles.