S'authentifier de manière anonyme avec Firebase

Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires afin de vous 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'il puisse continuer à travailler avec ses 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 Premiers pas.

  2. Activez la connexion anonyme :

    • Dans la section Authentication (Authentification) de la console Firebase, ouvrez la page Méthode de connexion.
    • Sur la page Méthode de connexion , activez la méthode Connexion anonyme , puis cliquez sur Enregistrer.

S'authentifier auprès de Firebase de manière anonyme

Lorsqu'un utilisateur déconnecté utilise une fonctionnalité d'application qui nécessite une authentification auprès de 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 continuer à travailler avec son nouveau compte. Par exemple, vous pouvez rendre disponibles dans le panier de son nouveau compte les articles qu'il a ajoutés à son panier avant de s'inscrire. Pour cela, procédez comme suit :

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

  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 à la méthode linkWithCredential() de l'utilisateur connecté :

    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

Lorsqu'un utilisateur crée 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 base du profil de l'utilisateur à partir de l'objet User. Consultez la section Gérer les utilisateurs.

Dans vos règles de sécurité Firebase Realtime Database et Cloud Storage, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth, et l'utiliser 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();