S'authentifier de manière anonyme avec Firebase

Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires pour s'authentifier auprès de Firebase. Ces comptes anonymes temporaires peuvent être utilisés pour permettre aux utilisateurs qui ne se sont pas encore inscrits à votre application de travailler avec des données protégées par des règles de sécurité. Si un utilisateur anonyme décide de s'inscrire à votre application, vous pouvez associer ses identifiants de connexion au compte anonyme afin qu’ils puissent continuer à travailler avec leurs données protégées lors de futures sessions.

Avant de commencer

  1. Si ce n'est pas déjà fait, suivez les étapes du guide de démarrage.

  2. Activez la connexion anonyme :

    • Dans la section Authentication (Authentification) de la console Firebase, ouvrez la page Sign in method (Méthode de connexion).
    • Sur la page Mode de connexion, activez l'option Connexion anonyme. , puis cliquez sur Save (Enregistrer).

Authentifier des utilisateurs de manière anonyme avec Firebase

Lorsqu'un utilisateur déconnecté utilise une fonctionnalité d'application nécessitant une authentification avec Firebase, connectez-le de manière anonyme en appelant signInAnonymously() :

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

Convertir un compte anonyme en compte permanent

Lorsqu'un utilisateur anonyme s'inscrit à votre application, vous pouvez lui permettre de poursuivre son travail avec son nouveau compte. Par exemple, vous pouvez mettre à sa disposition les articles qu'il a ajoutés à son panier avant de s'inscrire dans le panier de son nouveau compte. Pour cela, procédez comme suit :

  1. Lorsque l'utilisateur s'inscrit, terminez le flux de connexion du fournisseur d'authentification de l'utilisateur jusqu'à l'appel de l'une des méthodes signInWith, sans l'inclure. Par exemple, récupérez le jeton d'ID Google de l'utilisateur, Jeton d'accès Facebook, ou adresse e-mail et mot de passe.

  2. Obtenez un objet Credential pour le nouveau fournisseur d'authentification :

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Transmettez l'objet Credential au linkWithCredential() de l'utilisateur connecté. méthode:

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

Si l'appel à linkWithCredential() aboutit, le nouveau compte de l'utilisateur peut accéder aux données Firebase du compte anonyme.

Étapes suivantes

Une fois qu'un utilisateur a créé un compte, celui-ci est stocké dans votre projet Firebase et peut être utilisé pour identifier un utilisateur 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 votre base de données Firebase Realtime Database et vos règles de sécurité Cloud Storage, vous pouvez : Obtenez l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth, puis utilisez-le 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();