Vous pouvez transmettre l'état via une URL d'action lorsque vous envoyez des actions par e-mail pour réinitialiser un mot de passe ou valider l'adresse e-mail d'un utilisateur. L'utilisateur peut ainsi revenir à l'application une fois l'action terminée. De plus, vous pouvez spécifier si le lien d'action par e-mail doit être géré directement à partir d'une application mobile lorsqu'elle est installée, plutôt que sur une page Web.
Cela peut être extrêmement utile dans les scénarios courants suivants :
Un utilisateur qui n'est pas connecté tente d'accéder à un contenu qui nécessite une connexion. Toutefois, il a peut-être oublié son mot de passe et déclenche donc le flux de réinitialisation du mot de passe. À la fin du flux, 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'aux comptes validés. Par exemple, une newsletter peut exiger que l'utilisateur valide son adresse e-mail avant de s'abonner. L'utilisateur suit le flux de validation de l'adresse e-mail et s'attend à revenir à l'application pour finaliser son abonnement.
Dans d'autres cas, l'utilisateur peut avoir démarré le flux depuis son appareil mobile et s'attendre, après la validation, à revenir à son application mobile plutôt qu'au navigateur.
La possibilité de transmettre l'état via une URL d'action est une fonctionnalité puissante fournie par Firebase Auth, qui peut améliorer considérablement l'expérience utilisateur.
Transmettre l'état d'une URL d'action dans les actions par e-mail
Pour transmettre une URL d'action de manière sécurisée, vous devez ajouter le domaine de l'URL en tant que domaine autorisé :
Dans la console Firebase, accédez à l'onglet Sécurité > Authentification > Paramètres.
Dans la section Domaines autorisés, cliquez sur Ajouter un domaine, puis ajoutez l'URL.
Une instance firebase.auth.ActionCodeSettings doit être fournie lors de l'envoi d'un e-mail de réinitialisation du mot de passe ou d'un e-mail de validation. Cette interface utilise les paramètres suivants :
| Paramètre | Type | Description |
|---|---|---|
url |
chaîne | Définit le lien (état/URL d'action) qui a différentes significations selon le contexte :
|
iOS |
({bundleId: string}|undefined) | Définit l'ID du bundle iOS pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Apple. |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Définit le nom de package Android pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Android . |
handleCodeInApp |
(boolean|undefined) | Indique si le lien d'action par e-mail s'ouvre d'abord dans une application mobile ou dans un lien Web. La valeur par défaut est "false" (inactif). Lorsque la valeur est définie sur "true" (actif), le lien du code d'action est envoyé en tant que lien universel ou lien d'application Android, et il est ouvert par l'application si elle est installée. Dans le cas où la valeur est "false" (inactif), le code est d'abord envoyé au widget Web, puis, si l'utilisateur continue, il est redirigé vers l'application si elle est installée. |
linkDomain |
(string|undefined) | Lorsque des domaines de liens 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 |
dynamicLinkDomain |
(string|undefined) | Obsolète. Ne spécifiez pas ce paramètre. |
L'exemple suivant montre comment envoyer un lien de validation de l'adresse e-mail qui s'ouvre d'abord dans une application mobile à l'aide du domaine Hosting personnalisé custom-domain.com. Le lien profond contient la charge utile de l'URL d'action https://www.example.com/?email=user@example.com.
const actionCodeSettings = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
},
handleCodeInApp: true,
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
Configuration 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é, les liens d'hébergement doivent être configurés dans la Firebase console.
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 Firebase paramètres du projet de la console. De plus, vous devez fournir les empreintes SHA-1 et SHA-256 du certificat de l'application.
- Vous devez également configurer le filtre d'intent pour le lien profond dans votre fichier
AndroidManifest.xml. - Pour en savoir plus, consultez les instructions concernant la réception de liens d'hébergement Android.
Configurer des applications iOS :
- Si vous prévoyez de gérer ces liens à partir de votre application iOS, vous devez configurer le domaine du lien Hosting en tant que domaine associé dans les fonctionnalités de votre application.
- Pour en savoir plus, consultez les instructions concernant la réception de liens d'hébergement iOS.
Gérer les actions par e-mail dans une application Web
Vous pouvez spécifier si vous souhaitez gérer d'abord le lien du code d'action à partir d'une application Web, puis rediriger l'utilisateur vers une autre page Web ou application mobile une fois l'opération terminée, à condition que l'application mobile soit disponible.
Pour ce faire, définissez handleCodeInApp sur false dans l'objet firebase.auth.ActionCodeSettings. Bien qu'un ID de bundle iOS ou un nom de package Android ne soient pas obligatoires, les fournir permet à l'utilisateur d'être redirigé vers l'application spécifiée une fois le code d'action par e-mail terminé.
L'URL Web utilisée ici est celle configurée dans la section des modèles d'action par e-mail. Une URL par défaut est provisionnée pour tous les projets. Pour savoir comment personnaliser le gestionnaire d'actions par e-mail, consultez Personnaliser les gestionnaires d'e-mails.
Dans ce cas, le lien dans le paramètre de requête continueUrl sera un lien d'hébergement dont la charge utile est l'URL spécifiée dans l'objet ActionCodeSettings.
Lors de la gestion d'actions par e-mail telles que la validation de l'adresse 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 la modification 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 d'abord le lien du code d'action dans votre application mobile, à condition qu'elle soit installée. Si l'utilisateur clique sur le lien à partir d'un appareil qui n'est pas compatible avec l'application mobile, il s'ouvre à partir d'une page Web. Pour ce faire, définissez handleCodeInApp sur true dans l'objet firebase.auth.ActionCodeSettings. Vous devez également spécifier le nom de 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 des modèles d'action par e-mail. Une URL par défaut est provisionnée pour tous les projets. Pour savoir comment personnaliser le gestionnaire d'actions par e-mail, consultez Personnaliser les gestionnaires d'e-mails.
Dans ce cas, le lien de 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. Cette dernière sera l'URL d'origine spécifiée dans l'objet ActionCodeSettings. Le code d'action peut
être appliqué directement à partir d'une application mobile, de la même manière que dans
le flux Web décrit dans la section
Personnaliser les gestionnaires d'e-mails.
Lors de la gestion d'actions par e-mail telles que la validation de l'adresse 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 la modification prenne effet (c'est-à-dire que l'e-mail soit validé).