É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 réinitialiser un mot de passe ou valider l'adresse e-mail d'un utilisateur. Cela permet à l'utilisateur d'être redirigé vers l'application une fois l'action terminée. De plus, vous pouvez spécifier si le lien d'action de l'e-mail doit être géré directement depuis 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 connecté tente peut-être d'accéder à un contenu qui nécessite une connexion. Toutefois, il est possible que l'utilisateur ait oublié son mot de passe et déclenche donc le processus de réinitialisation. À 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'à des comptes validés. Par exemple, une application de 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 à être redirigé vers l'application pour finaliser son abonnement.

  • En général, lorsqu'un utilisateur lance un flux 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 poursuite le permet.

La possibilité de transmettre l'état via une URL de poursuite est une fonctionnalité puissante fournie par Firebase Auth, qui peut améliorer considérablement l'expérience utilisateur.

Transmettre l'état/l'URL de poursuite dans les actions par e-mail

Pour transmettre une URL de poursuite 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, dans la section Authentification, 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 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 (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 ouvert 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. Cette opération tente d'ouvrir le lien dans une application Android si elle est installée.
androidInstallApp booléen Indique s'il faut installer l'application Android si l'appareil la prend en charge et si elle n'est pas déjà installée. Si ce champ est fourni sans packageName, une erreur est générée pour expliquer que packageName doit être fourni avec ce champ.
androidMinimumVersion Chaîne Version minimale de l'application compatible avec ce flux. Si minimumVersion est spécifié et qu'une ancienne version 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éen Indique si le lien d'action de l'e-mail sera d'abord ouvert dans une application mobile ou un lien Web. La valeur par défaut est "false" (inactif). Si la valeur est définie sur "true", le lien du code d'action sera envoyé en tant que lien universel ou lien d'application Android, et sera ouvert par l'application si elle est installée. Dans le cas "false", le code sera d'abord envoyé au widget Web, puis, si l'application est installée, l'utilisateur sera redirigé vers celle-ci lorsqu'il cliquera sur "Continuer".
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 liens dynamiques 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 illustre comment envoyer un lien de validation d'adresse 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 de l'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 pour envoyer un lien destiné à être ouvert dans une application mobile. Pour utiliser cette fonctionnalité, vous devez configurer les liens dynamiques 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 ni créé de domaine de liens dynamiques, faites-le maintenant.

    3. Si vous avez déjà créé un domaine Dynamic Links, notez-le. Un domaine Dynamic Links ressemble généralement à l'exemple suivant :

      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 les applications Android :

    1. Si vous prévoyez de gérer ces liens depuis votre application Android, le nom du package Android doit être spécifié dans les paramètres du projet de la console Firebase. De plus, vous devez fournir les empreintes SHA-1 et SHA-256 du certificat de l'application.
    2. Vous devrez également configurer le filtre d'intent pour le lien profond dans votre fichier AndroidManifest.xml.
    3. Pour en savoir plus, consultez les instructions sur la réception des liens dynamiques Android.
  3. Configurer les applications Apple :

    1. Si vous prévoyez de gérer ces liens depuis 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 App Store et l'ID d'équipe Apple Developer.
    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 iOS 8 et les versions antérieures, vous devrez définir l'ID de votre bundle comme schéma personnalisé pour les URL entrantes.
    4. Pour en savoir plus, consultez les instructions concernant la réception des liens dynamiques sur les plates-formes Apple.

Gérer les actions d'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 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 ActionCodeSettings. Bien qu'un ID de bundle ou un nom de package Android ne soient pas obligatoires, les fournir permettra à 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 "Modèles d'actions d'e-mail". Une instance par défaut est provisionnée pour tous les projets. Pour savoir comment personnaliser le gestionnaire d'actions de messagerie, consultez 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 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.

Lors du traitement des actions par e-mail telles que la validation d'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'adresse e-mail soit validée).

Gérer les actions d'e-mail dans une application mobile

Vous pouvez spécifier si vous souhaitez d'abord gérer le lien du code d'action dans votre application mobile, à 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 si elle n'est pas déjà installée. Si l'utilisateur clique sur le lien depuis un appareil qui n'est pas compatible avec l'application mobile, il est redirigé vers une page Web. Pour ce faire, définissez handleCodeInApp sur true dans l'objet ActionCodeSettings. Le nom de package Android ou l'ID du bundle de l'application mobile devront également être spécifiés.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'actions d'e-mail. Une configuration par défaut est fournie pour tous les projets. Pour savoir comment personnaliser le gestionnaire d'actions de messagerie, consultez 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 sera le 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. Le code d'action peut être appliqué directement depuis une application mobile, de la même manière qu'il est géré dans le flux Web décrit dans la section Personnaliser les gestionnaires d'e-mails.

Lors du traitement des actions par e-mail telles que la validation d'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'adresse e-mail soit validée).