État de transmission dans les actions d'e-mail

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 application de 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 à être redirigé vers l'application pour finaliser son abonnement.

  • En règle générale, lorsqu'un utilisateur lance un processus de réinitialisation de mot de passe ou de validation d'adresse e-mail dans une application Apple, il s'attend à le terminer dans l'application. La possibilité de transmettre l'état via l'URL de continuation le permet.

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/l'URL de poursuite 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 d'autorisation 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. Cette interface utilise les paramètres suivants:

Paramètre Type Description
url Chaîne

Définit le lien (URL d'état/de poursuite), qui a différentes significations selon le contexte:

  • Lorsque le lien est géré dans les widgets d'action Web, il s'agit du lien profond dans le paramètre de requête continueUrl.
  • Lorsque le lien est géré directement dans l'application, il s'agit du paramètre de requête continueUrl dans le lien profond du lien dynamique.
iOSBundleId Chaîne Définit l'ID du bundle. Le lien sera alors essayé dans une application Apple si elle est installée. L'application doit être enregistrée dans la console. Si aucun ID de bundle n'est fourni, la valeur de ce champ est définie sur l'ID de bundle du bundle principal de l'application.
androidPackageName Chaîne Définit le nom du package Android. Le lien sera alors essayé dans une application Android si elle est installée.
androidInstallApp Bool Indique si l'application Android doit être installée si l'appareil est compatible avec celle-ci et si elle n'est pas déjà installée. Si ce champ est fourni sans packageName, une erreur s'affiche, expliquant que le packageName doit être fourni avec ce champ.
androidMinimumVersion Chaîne Version minimale de l'application compatible avec ce flux. Si la valeur minimumVersion est spécifiée et qu'une version antérieure de l'application est installée, l'utilisateur est redirigé vers le Play Store pour mettre à niveau l'application. L'application Android doit être enregistrée dans la console.
handleCodeInApp Bool 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, il sera redirigé vers l'application.
dynamicLinkDomain Chaîne (Obsolète, utilisez "linkDomain") Définit le domaine (ou sous-domaine) de lien dynamique à utiliser pour le lien actuel s'il doit être ouvert à l'aide de Firebase Dynamic Links. Étant donné que plusieurs domaines de liaison dynamique peuvent être configurés par projet, ce champ permet d'en choisir un explicitement. Si aucun n'est fourni, le premier domaine est utilisé par défaut. linkDomain Chaîne Domaine Firebase Hosting personnalisé facultatif à utiliser lorsque le lien doit être ouvert via une application mobile spécifiée. Le domaine doit être configuré dans Firebase Hosting et appartenir au projet. Il ne peut pas s'agir d'un domaine Hosting par défaut ("web.app" ou "firebaseapp.com"). Ce paramètre remplace le paramètre "dynamicLinkDomain" obsolète.

L'exemple suivant montre comment envoyer un lien de validation par e-mail qui s'ouvrira d'abord dans une application mobile en tant que lien dynamique Firebase à l'aide du domaine de lien dynamique personnalisé example.page.link (application iOS com.example.ios ou application Android com.example.android où l'application s'installera si elle n'est pas déjà installée et que la version minimale est 12). Le lien profond contiendra la charge utile d'URL de continuation https://www.example.com/?email=user@example.com.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth utilise Firebase Dynamic Links lors de l'envoi d'un lien destiné à être ouvert dans une application mobile. Pour utiliser cette fonctionnalité, vous devez configurer Dynamic Links dans la console Firebase.

  1. Activez Firebase Dynamic Links:

    1. Dans la console Firebase, ouvrez la section Liens dynamiques.

    2. Si vous n'avez pas encore accepté les conditions d'utilisation des liens dynamiques et créé de domaine de liens dynamiques, faites-le maintenant.

    3. Si vous avez déjà créé un domaine de liens dynamiques, notez-le. Un domaine de liens dynamiques se présente généralement comme suit:

      example.page.link

    4. Vous aurez besoin de cette valeur lorsque vous configurerez votre application Apple ou Android pour intercepter le lien entrant.

  2. Configurer des applications Android:

    1. Si vous prévoyez de gérer ces liens à partir de votre application Android, le nom du package Android doit être spécifié dans les paramètres du projet de la Firebase Console. De plus, les valeurs SHA-1 et SHA-256 du certificat de l'application doivent être fournies.
    2. Vous devrez également configurer le filtre d'intent pour le lien profond dans votre fichier AndroidManifest.xml.
    3. Pour en savoir plus, consultez Instructions pour recevoir des liens dynamiques Android.
  3. Configurer les applications Apple:

    1. Si vous prévoyez de gérer ces liens à partir de votre application, l'ID du bundle doit être spécifié dans les paramètres du projet de la console Firebase. En outre, vous devez également spécifier l'ID de l'App Store et l'ID de l'équipe de développeurs Apple.
    2. Vous devrez également configurer le domaine de lien universel FDL en tant que domaine associé dans les fonctionnalités de votre application.
    3. Si vous prévoyez de distribuer votre application sur les versions iOS 8 et antérieures, vous devez définir votre ID de bundle comme schéma personnalisé pour les URL entrantes.
    4. Pour en savoir plus, consultez les instructions sur la réception des liens dynamiques des plates-formes Apple.

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, définissez handleCodeInApp sur false dans l'objet ActionCodeSettings. Bien qu'un ID de bundle 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 FDL dont la charge utile est le URL spécifié dans l'objet ActionCodeSettings. Bien que vous puissiez intercepter et gérer le lien entrant à partir de votre application sans aucune dépendance supplémentaire, nous vous recommandons d'utiliser la bibliothèque cliente FDL pour analyser le lien profond à votre place.

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. Avec les applications Android, vous pouvez également spécifier via androidInstallApp que l'application doit être installée si l'appareil la prend en charge et qu'elle n'est pas déjà 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, définissez handleCodeInApp sur true dans l'objet ActionCodeSettings. Vous devez également spécifier le nom du package Android ou l'ID de bundle 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 FDL 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. Bien que vous puissiez intercepter et gérer le lien entrant depuis votre application sans aucune dépendance supplémentaire, nous vous recommandons d'utiliser la bibliothèque cliente FDL pour analyser le lien profond à votre place. 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é.