Authentifiez-vous anonymement auprès de Firebase à l'aide de JavaScript

Vous pouvez utiliser l'authentification Firebase pour créer et utiliser des comptes anonymes temporaires pour 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 sur 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 informations de connexion au compte anonyme afin qu'il puisse continuer à travailler avec ses données protégées lors de sessions futures.

Avant que tu commences

  1. Ajoutez Firebase à votre projet JavaScript .
  2. Si vous n'avez pas encore connecté votre application à votre projet Firebase, faites-le depuis la console Firebase .
  3. Activer l'authentification anonyme :
    1. Dans la console Firebase , ouvrez la section Auth .
    2. Sur la page Méthodes de connexion , activez la méthode de connexion anonyme .
    3. Facultatif : si vous avez mis à niveau votre projet vers Firebase Authentication avec Identity Platform , vous pouvez activer le nettoyage automatique. Lorsque vous activez ce paramètre, les comptes anonymes de plus de 30 jours seront automatiquement supprimés. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification anonyme ne sera plus prise en compte dans les limites d'utilisation ou les quotas de facturation. Voir Nettoyage automatique .

Authentifiez-vous 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 procédant comme suit :

  1. Appelez la méthode signInAnonymously :

    Web modular API

    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 namespaced API

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

    Web modular API

    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 namespaced API

    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 souhaiterez peut-être lui permettre de continuer son travail avec son nouveau compte. Par exemple, vous souhaiterez peut-être rendre les articles que l'utilisateur a ajoutés à son panier avant de s'inscrire disponibles dans son nouveau compte. le panier d'achat du compte. Pour ce faire, procédez comme suit :

  1. Lorsque l'utilisateur s'inscrit, terminez le flux de connexion pour le fournisseur d'authentification de l'utilisateur jusqu'à, mais non compris, l'appel de l'une des méthodes Auth.signInWith . Par exemple, obtenez le jeton d'identification Google de l'utilisateur, le jeton d'accès Facebook ou l'adresse e-mail et le mot de passe.
  2. Obtenez un AuthCredential pour le nouveau fournisseur d'authentification :

    Connexion Google

    Web modular API

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

    Web namespaced API

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

    Web modular API

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

    Web namespaced API

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

    Web modular API

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

    Web namespaced API

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

    Web modular API

    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 namespaced API

    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 avec 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 pour lesquels le nettoyage automatique est activé, l'authentification anonyme ne sera pas prise en compte dans les limites d'utilisation ou les quotas de facturation.

  • Tous les comptes anonymes créés après l'activation du nettoyage automatique peuvent être automatiquement supprimés à tout moment après 30 jours après la 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, tous les comptes anonymes dont la suppression est programmée resteront programmés pour être supprimés.
  • Si vous « mettez à niveau » un compte anonyme en le liant à une méthode de connexion, le compte ne sera pas automatiquement supprimé.

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

Prochaines étapes

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