S'authentifier avec Firebase de manière anonyme à l'aide de JavaScript

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. Ajoutez Firebase à votre projet JavaScript.
  2. Si vous n'avez pas encore associé votre application à votre projet Firebase, faites-le depuis la console Firebase.
  3. Activez l'authentification anonyme :
    1. Dans la console Firebase, ouvrez la section Authentification.
    2. Sur la page Modes de connexion, activez le mode de connexion Anonyme.
    3. Facultatif : Si vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform, vous pouvez activer le nettoyage automatique. Lorsque vous activez ce paramètre, les comptes anonymes de plus de 30 jours sont automatiquement supprimés. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification anonyme ne sera plus comptabilisée dans les limites d'utilisation ni dans les quotas de facturation. Consultez la section Nettoyage automatique.

S'authentifier avec Firebase de manière anonyme

Lorsqu'un utilisateur déconnecté utilise une fonctionnalité d'application nécessitant une authentification avec Firebase, connectez-le de manière anonyme en suivant les étapes ci-dessous :

  1. Appelez la méthode signInAnonymously :

    Web

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    C'est également là que vous pouvez détecter et gérer les erreurs. Pour obtenir la liste des codes d'erreur, consultez la documentation de référence sur l'authentification.
  2. Si la méthode signInAnonymously se termine sans erreur, l'observateur enregistré dans onAuthStateChanged se déclenche et vous pouvez obtenir les données du compte de l'utilisateur anonyme à partir de l'objet User :

    Web

    import { getAuth, onAuthStateChanged } from "firebase/auth";
    
    const auth = getAuth();
    onAuthStateChanged(auth, (user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/auth.user
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web

    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/v8/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

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 faire en sorte que les articles qu'il a ajoutés à son panier avant de s'inscrire soient disponibles dans le panier de son nouveau compte. Pour cela, procédez comme suit :

  1. Lorsque l'utilisateur s'inscrit, effectuez le flux de connexion pour le fournisseur d'authentification de l'utilisateur jusqu'à l'appel d'une des méthodes Auth.signInWith, mais sans l'inclure. Par exemple, récupérez le jeton d'identité Google de l'utilisateur, le jeton d'accès Facebook, ou son adresse e-mail et son mot de passe.
  2. Obtenez un AuthCredential pour le nouveau fournisseur d'authentification :

    Google Sign-In

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Connexion avec Facebook

    Web

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    Connexion avec une adresse e-mail et un mot de passe

    Web

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Transmettez l'objet AuthCredential à la méthode link de l'utilisateur connecté :

    Web

    import { getAuth, linkWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    linkWithCredential(auth.currentUser, credential)
      .then((usercred) => {
        const user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

    Web

    auth.currentUser.linkWithCredential(credential)
      .then((usercred) => {
        var user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

Si l'appel à link réussit, le nouveau compte de l'utilisateur peut accéder aux données Firebase du compte anonyme.

Nettoyage automatique

Si vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform, vous pouvez activer le nettoyage automatique dans la console Firebase. Lorsque vous activez cette fonctionnalité, vous autorisez Firebase à supprimer automatiquement les comptes anonymes de plus de 30 jours. Dans les projets où le nettoyage automatique est activé, l'authentification anonyme n'est pas comptabilisée dans les limites d'utilisation ni dans les quotas de facturation.

  • Les comptes anonymes créés après l'activation du nettoyage automatique peuvent être supprimés à tout moment après 30 jours suivant leur création.
  • Les comptes anonymes existants pourront être supprimés automatiquement 30 jours après l'activation du nettoyage automatique.
  • Si vous désactivez le nettoyage automatique, les comptes anonymes dont la suppression est planifiée le resteront.
  • Si vous "mettez à niveau" un compte anonyme en l'associant à une méthode de connexion, il ne sera pas supprimé automatiquement.

Si vous souhaitez savoir combien d'utilisateurs seront concernés avant d'activer cette fonctionnalité et que vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform, vous pouvez filtrer par is_anon dans Cloud Logging.

Étapes suivantes

Maintenant que les utilisateurs peuvent s'authentifier avec Firebase, vous pouvez contrôler leur accès aux données de votre base de données Firebase à l'aide des règles Firebase.