Vous pouvez transmettre l'état via une URL de poursuite lorsque vous envoyez des actions par e-mail pour la réinitialisation de mot de passe ou la validation de l'adresse e-mail d'un utilisateur. Cela permet à l'utilisateur de revenir à l'application une fois l'action terminée. En outre, vous pouvez spécifier si vous souhaitez gérer le lien d'action par e-mail directement à partir d'une application mobile lorsqu'elle est installée au lieu d'une page Web.
Cela peut s'avérer extrêmement utile dans les scénarios courants suivants:
Un utilisateur qui n'est pas actuellement connecté peut essayer d'accéder à un contenu qui nécessite qu'il soit connecté. Toutefois, l'utilisateur peut avoir oublié son mot de passe et déclencher le flux de réinitialisation du mot de passe. À la fin du parcours, l'utilisateur s'attend à revenir à la section de l'application à laquelle il essayait d'accéder.
Une application ne peut proposer l'accès qu'à des comptes validés. Par exemple, une newsletter peut demander à l'utilisateur de valider son adresse e-mail avant de s'abonner. L'utilisateur doit suivre le flux de validation de l'adresse e-mail et s'attendre à revenir à l'application pour finaliser son abonnement.
Dans d'autres cas, l'utilisateur peut avoir lancé la procédure depuis son appareil mobile et s'attendre à être redirigé vers son application mobile après la validation, plutôt que vers le navigateur.
La possibilité de transmettre l'état via une URL de poursuite est une fonctionnalité puissante fournie par Firebase Auth, qui peut considérablement améliorer l'expérience utilisateur.
Transmettre l'état d'une URL de suivi dans les actions par e-mail
Pour transmettre une URL de suivi de manière sécurisée, le domaine de l'URL doit être ajouté à la liste blanche dans la console Firebase. Pour ce faire, accédez à la section Authentification et ajoutez ce domaine à la liste des domaines autorisés sous l'onglet Méthode de connexion s'il n'y figure pas déjà.
Une instance ActionCodeSettings doit être fournie lors de l'envoi d'un e-mail de réinitialisation de mot de passe ou d'un e-mail de validation. Vous pouvez le créer avec la classe ActionCodeSettings.Builder associée, qui contient les méthodes suivantes:
Méthode | Description |
---|---|
setUrl(String url) |
Définit le lien (URL d'état/de poursuite), qui a différentes significations selon le contexte:
|
setIOSBundleId(String iOSBundleId) |
Définit l'ID de bundle iOS pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou mobile qui s'ouvre sur un appareil Apple. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Définit le nom du package Android pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou mobile qui s'ouvre sur un appareil Android. |
setHandleCodeInApp(boolean status) |
Indique si le lien d'action par e-mail doit s'ouvrir d'abord dans une application mobile ou dans un lien Web. La valeur par défaut est "false" (inactif). Si cette valeur est définie sur "true", le lien du code d'action sera envoyé en tant que lien universel ou Android App Link, et sera ouvert par l'application si elle est installée. Dans le cas contraire, le code sera d'abord envoyé au widget Web, puis, si l'application est installée, elle sera redirigée vers l'application. |
setLinkDomain(String customDomain) |
Lorsque des domaines de lien Hosting personnalisés sont définis pour un projet, spécifiez celui à utiliser lorsque le lien doit être ouvert par une application mobile spécifiée. Sinon, le domaine par défaut est automatiquement sélectionné (par exemple, PROJECT_ID.firebaseapp.com |
setDynamicLinkDomain(String dynamicLinkDomain) |
Obsolète. Ne spécifiez pas ce paramètre. |
L'exemple suivant montre comment envoyer un lien de validation par e-mail qui s'ouvre d'abord dans une application mobile. Le lien profond contiendra la charge utile d'URL de continuation http://www.example.com/verify?uid=1234
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Configurer des liens Firebase Hosting
Firebase Authentication utilise Firebase Hosting lors de l'envoi d'un lien destiné à être ouvert dans une application mobile. Pour utiliser cette fonctionnalité, vous devez configurer les liens d'hébergement dans la console Firebase.
Configurer des applications Android:
- Si vous prévoyez de gérer ces liens à partir de votre application Android, le nom de package de votre application doit être spécifié dans les paramètres du projet de la console Firebase. De plus, les valeurs SHA-1 et SHA-256 du certificat de l'application doivent être fournies.
- Vous devez également configurer le filtre d'intent pour le lien profond dans votre fichier
AndroidManifest.xml
. - Pour en savoir plus, consultez les instructions pour recevoir des liens d'hébergement Android.
Configurer des applications iOS:
- Si vous prévoyez de gérer ces liens à partir de votre application iOS, vous devrez configurer le domaine de lien Hosting en tant que domaine associé dans les fonctionnalités de votre application.
- Pour en savoir plus, consultez les instructions pour recevoir des liens d'hébergement iOS.
Gérer les actions par e-mail dans une application Web
Vous pouvez spécifier si vous souhaitez d'abord gérer le lien du code d'action à partir d'une application Web, puis rediriger vers une autre page Web ou une autre application mobile une fois l'action terminée, à condition que l'application mobile soit disponible.
Pour ce faire, appelez setHandleCodeInApp(false)
dans l'objet ActionCodeSettings.Builder. Bien qu'un ID de bundle iOS ou un nom de package Android ne soit pas obligatoire, les fournir permet à l'utilisateur d'être redirigé vers l'application spécifiée une fois le code d'action par e-mail exécuté.
L'URL Web utilisée ici est celle configurée dans la section "Modèles d'action par e-mail". Un par défaut est provisionné pour tous les projets. Pour en savoir plus sur la personnalisation du gestionnaire d'actions par e-mail, consultez la section Personnaliser les gestionnaires d'e-mails.
Dans ce cas, le lien dans le paramètre de requête continueUrl
sera un lien Hosting dont la charge utile est le URL
spécifié dans l'objet ActionCodeSettings
.
Lorsque vous gérez des actions par e-mail telles que la validation par e-mail, le code d'action du paramètre de requête oobCode
doit être analysé à partir du lien profond, puis appliqué via applyActionCode
pour que le changement prenne effet, c'est-à-dire que l'e-mail soit validé.
Gérer les actions par e-mail dans une application mobile
Vous pouvez spécifier si vous souhaitez gérer le lien du code d'action dans votre application mobile en premier, à condition qu'elle soit installée. Si le lien est cliqué à partir d'un appareil qui n'est pas compatible avec l'application mobile, il s'ouvre à partir d'une page Web. Pour ce faire, appelez setHandleCodeInApp(true)
dans l'objet ActionCodeSettings.Builder. Vous devrez également spécifier le nom du package Android ou l'ID du bundle iOS de l'application mobile.
L'URL Web de remplacement utilisée ici, lorsqu'aucune application mobile n'est disponible, est celle configurée dans la section "Modèles d'action par e-mail". Un par défaut est provisionné pour tous les projets. Pour en savoir plus sur la personnalisation du gestionnaire d'actions par e-mail, consultez la section Personnaliser les gestionnaires d'e-mails.
Dans ce cas, le lien vers l'application mobile envoyé à l'utilisateur sera un lien Hosting dont la charge utile est l'URL du code d'action, configurée dans la console, avec les paramètres de requête oobCode
, mode
, apiKey
et continueUrl
. Ce dernier correspond à l'URL
d'origine spécifié dans l'objet ActionCodeSettings
. Le code d'action peut être appliqué directement à partir d'une application mobile, comme il est géré à partir du flux Web décrit dans la section Personnaliser les gestionnaires d'e-mails.
Lorsque vous gérez des actions par e-mail telles que la validation par e-mail, le code d'action du paramètre de requête oobCode
doit être analysé à partir du lien profond, puis appliqué via applyActionCode
pour que le changement prenne effet, c'est-à-dire que l'e-mail soit validé.