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 appli 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
- Si ce n'est pas encore fait, ajoutez Firebase à votre projet Android.
-
Dans le fichier Gradle de votre module (au niveau de l'application)
(généralement
<project>/<app-module>/build.gradle.kts
ou<project>/<app-module>/build.gradle
), Ajoutez la dépendance pour la bibliothèque Firebase Authentication pour Android. Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler la gestion des versions des bibliothèques.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
En utilisant Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
(Alternative) Ajouter des dépendances de la bibliothèque Firebase sans utiliser l'BoM
Si vous choisissez de ne pas utiliser Firebase BoM, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.
Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, recommandent d'utiliser BoM pour gérer les versions de la bibliothèque, ce qui garantit que toutes les versions sont compatibles.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.0.0") }
- Si vous n'avez pas encore associé votre application à votre projet Firebase, faites-le depuis la console Firebase.
- Activer 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. Quand ? les comptes anonymes de plus de 30 jours supprimés. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification sont comptabilisées dans les limites d'utilisation ou les quotas de facturation. Voir Nettoyage automatique.
Authentifier des utilisateurs de manière anonyme avec Firebase
Lorsqu'un utilisateur déconnecté utilise une fonctionnalité de l'application qui nécessite une authentification auprès de Firebase, connectez l'utilisateur de manière anonyme en procédant comme suit:
- Dans la méthode
onCreate
de votre activité, récupérez l'instance partagée. de l'objetFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Lorsque vous initialisez votre activité, vérifiez si l'utilisateur est actuellement connecté:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- Enfin, appelez
signInAnonymously
pour vous connecter en tant qu'utilisateur anonyme utilisateur:Kotlin+KTX
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
pour obtenir les données du compte de l'utilisateur.
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 :
- Lorsque l'utilisateur s'inscrit, suivez la procédure de connexion
d'authentification jusqu'à l'appel de l'un des
FirebaseAuth.signInWith
. 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. Obtenez un
AuthCredential
pour le nouveau fournisseur d'authentification:Google Sign-In
Kotlin+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Connexion à Facebook
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Connexion par e-mail avec mot de passe
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Transmettez l'objet
AuthCredential
à l'interface utilisateur MéthodelinkWithCredential
:Kotlin+KTX
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
Si l'appel à linkWithCredential
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. En activant cette fonctionnalité, vous autorisez Firebase supprime automatiquement les comptes anonymes datant de plus de 30 jours. Dans les projets avec (nettoyage activé), l'authentification anonyme ne sera pas prise en compte 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 automatiquement supprimées à tout moment 30 jours après leur création.
- Les comptes anonymes existants pourront être supprimés automatiquement 30 jours après en activant le nettoyage automatique.
- Si vous désactivez le nettoyage automatique, tous les comptes anonymes dont la suppression est programmée seront conservés dont la suppression est planifiée.
- Si vous passez à un forfait supérieur un compte anonyme en l'associant à une méthode de connexion quelconque, le compte ne sont pas automatiquement supprimées.
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 le cloud
Journalisation.
Étapes suivantes
Maintenant que les utilisateurs peuvent s'authentifier auprès de Firebase, vous pouvez contrôler leur accès à dans votre base de données Firebase Règles Firebase.