Premiers pas avec Firebase Authentication sur Flutter

Associer votre application à Firebase

Installez et initialisez les SDK Firebase pour Flutter si ce n'est pas déjà fait. donc.

Ajouter Firebase Authentication à votre application

  1. À partir de la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in :

    flutter pub add firebase_auth
    
  2. Une fois l'opération terminée, recompilez votre application Flutter:

    flutter run
    
  3. Importez 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 d'aborder la façon dont votre application authentifie les utilisateurs, examinons un ensemble pour créer des prototypes et tester la fonctionnalité d'authentification: Suite d'émulateurs locaux Firebase. Si vous hésitez entre les techniques d’authentification et fournisseurs, testant différents modèles de données avec des données publiques et privées à l'aide de l'authentification et des règles de sécurité Firebase, ou au prototypage de conceptions d'UI de connexion, être capable de travailler localement sans déployer de services actifs peut être une excellente idée.

L'é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, et éventuellement les ressources de projet émulées (fonctions, autres bases de données, et règles de sécurité).

L'utilisation de l'émulateur Authentication ne nécessite que quelques étapes:

  1. Ajouter une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.

  2. À partir de la racine du répertoire de votre projet local, exécutez firebase emulators:start.

  3. Utilisez l'UI de la suite Local Emulator pour le prototypage interactif ou l'API REST de l'émulateur Authentication pour les tests non interactifs.

  4. 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 Authentication. Pour en savoir plus, consultez la présentation de la suite d'émulateurs locaux.

Passons maintenant à l'authentification des utilisateurs.

Vérifier l'état d'authentification actuel

Firebase Auth propose de nombreux utilitaires et méthodes d'intégration une authentification sécurisée dans votre application Flutter, nouvelle ou existante. Dans de nombreuses vous devez 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 concernant l'événement l'état d'authentification, puis fournit les événements suivants 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:

  • Immédiatement 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:

  • Immédiatement après l'enregistrement de l'écouteur.
  • Lorsqu'un utilisateur est connecté
  • Lorsque l'utilisateur actuel est déconnecté.
  • En cas de modification du jeton de l'utilisateur actuel.

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:

  • Immédiatement après l'enregistrement de l'écouteur.
  • Lorsqu'un utilisateur est connecté
  • Lorsque l'utilisateur actuel est déconnecté.
  • En cas de modification du jeton de l'utilisateur actuel.
  • Lorsque les méthodes suivantes fournies par FirebaseAuth.instance.currentUser sont appelées:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Conserver l'état d'authentification

Les SDK Firebase pour toutes les plates-formes sont directement compatibles pour garantir que l'état d'authentification de l'utilisateur est conservé lors des redémarrages de l'application ou 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 dans les 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é IndexedDB Vous pouvez modifier la persistance pour stocker les données dans l'espace de stockage local avec Persistence.LOCAL. Si nécessaire, vous pouvez modifier ce comportement par défaut pour qu'il ne conserve que les données l'état d'authentification pour la session en cours, ou pas du tout. Pour configurer ces paramètres, appelez la méthode FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); suivante. Vous pouvez toujours mettre à jour la persistance pour 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.