Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires afin de vous authentifier avec 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
- Ajoutez Firebase à votre projet JavaScript.
- Si vous n'avez pas encore associé votre application à votre projet Firebase, faites-le depuis la console Firebase.
- Activez l'authentification anonyme :
- Dans la console Firebase, ouvrez la section Authentification.
- Sur la page Sign-in Methods (Méthodes de connexion), activez la méthode de connexion Anonymous (Anonyme).
- 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 n'est plus comptabilisée dans les limites d'utilisation ni dans les quotas de facturation. Consultez la section Nettoyage automatique.
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 procédant comme suit:
- 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; // ... });
- Si la méthode
signInAnonymously
se termine sans erreur, l'observateur enregistré dansonAuthStateChanged
se déclenche et vous pouvez obtenir les données de compte de l'utilisateur anonyme à partir de l'objetUser
: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 mettre à sa disposition les articles qu'il a ajoutés à son panier avant de s'inscrire. Pour cela, procédez comme suit :
- 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
Auth.signInWith
, 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. 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);
Se connecter 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);
Transmettez l'objet
AuthCredential
à la méthodelink
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
aboutit, 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é, Firebase peut supprimer automatiquement les comptes anonymes datant de plus de 30 jours. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification anonyme n'est pas comptabilisée dans les limites d'utilisation ni dans les quotas de facturation.
- Tous les comptes anonymes créés après l'activation du nettoyage automatique peuvent être supprimés automatiquement à tout moment après 30 jours de 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 programmés pour être supprimés resteront programmés pour être supprimés.
- Si vous "passez à la version supérieure" d'un compte anonyme en l'associant à une méthode de connexion, le compte n'est pas automatiquement supprimé.
Si vous souhaitez connaître le nombre d'utilisateurs 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 de Règles Firebase.