Connecter 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 l'opération terminé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 Firebase console (accédez à l'onglet Security > Authentication > Sign-in method (Sécurité > Authentification > Méthode de connexion)). Vous pouvez activer la connexion par e-mail/mot de passe et de nombreux autres fournisseurs d'identité pour votre application.
(Facultatif) Créer un prototype et tester avec la suite d'émulateurs locaux Firebase
Avant de parler de la manière dont votre application authentifie les utilisateurs, présentons un ensemble d'outils que vous pouvez utiliser pour créer un prototype et tester la fonctionnalité d'authentification : la suite d'émulateurs locaux Firebase. Si vous choisissez entre différentes techniques et différents fournisseurs d'authentification, que vous essayez 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 créez un prototype de conception d'UI de connexion, il peut être judicieux de pouvoir travailler localement sans déployer de services en direct.
Un émulateur d'authentification 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é).
L'utilisation de l'émulateur d'authentification ne nécessite que quelques étapes :
Ajouter une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
À la racine du répertoire de votre projet en local, exécutez
firebase emulators:start.Utilisez l'UI de la suite d'émulateurs locaux pour le prototypage interactif ou l'API REST de l'émulateur d'authentification 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 dans Connecter votre application à l'émulateur d'authentification. Pour en savoir plus, consultez la présentation de la suite d'émulateurs locaux.
Voyons maintenant comment authentifier les utilisateurs.
Vérifier l'état d'authentification actuel
Firebase Auth fournit de nombreuses méthodes et de nombreux utilitaires qui vous permettent d'intégrer une authentification sécurisée à votre application Flutter 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 modifications de l'é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!');
}
});
Les événements sont déclenchés dans les cas suivants :
- 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!');
}
});
Les événements sont déclenchés dans les cas suivants :
- 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 est modifié.
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!');
}
});
Les événements sont déclenchés dans les cas suivants :
- 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 est modifié.
- Lorsque les méthodes suivantes fournies par
FirebaseAuth.instance.currentUsersont appelées :reload()unlink()updateEmail()updatePassword()updatePhoneNumber()updateProfile()
Persister l'état d'authentification
Les SDK Firebase pour toutes les plates-formes offrent une prise en charge prête à l'emploi pour garantir que l'état d'authentification de votre utilisateur est conservé lors des redémarrages de l'application ou des rechargements de la 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 est 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 pour chaque instance d'authentification à 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.