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

Vous pouvez transmettre l'état via une URL de suivi lors de l'envoi d'actions par e-mail concernant le mot de passe réinitialise ou valide 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é. Cependant, l'utilisateur peut avoir oublié son mot de passe et déclenchera donc le flux de réinitialisation de mot de passe. À la fin de le flux, l'utilisateur s'attend à revenir à la section de l'application qu'il que vous essayez d'accéder.

  • Une application ne peut donner accès qu'à des comptes validés. Pour Par exemple, une newsletter peut demander à l'utilisateur de valider son adresse e-mail avant à 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 un état via une URL de poursuite est une fonctionnalité efficace Firebase Auth permet d'améliorer considérablement l'expérience utilisateur.

État de transmission/URL de poursuite des actions dans les actions relatives à l'e-mail

Pour transmettre une URL de suivi de manière sécurisée, le domaine de l'URL doit : être ajoutées à la liste blanche dans la console Firebase. Pour ce faire, accédez à la section Authentification, puis ajoutez ce domaine au Domaines autorisés dans l'onglet Méthode de connexion, le cas échéant.

Un élément ActionCodeSettings instance doit être fournie lors de l'envoi d'un e-mail de réinitialisation du mot de passe ou e-mail de validation. Il peut être créé avec la classe ActionCodeSettings.Builder 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 :

  • 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.
setIOSBundleId(String iOSBundleId) Définit l'ID du bundle iOS. Le lien s'ouvrira dans une application iOS si quand il est installé. L'application iOS doit être enregistrée dans la console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Définit le nom du package Android. Cela tentera d'ouvrir le lien dans une l'application Android si elle est installée. Si installIfNotAvailable est défini sur true, il spécifie installer ou non l'application Android (si l'appareil est compatible) et l'application ; n'est pas déjà installé. 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.
setHandleCodeInApp(boolean status) Indique si le lien d'action par e-mail sera ouvert dans une application mobile ou sur un site 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 d'une erreur "false", le code est envoyé dans un premier temps, puis sur "Continuer" vous redirige vers l'application si installés.
setDynamicLinkDomain(String dynamicLinkDomain) Définit le domaine (ou le sous-domaine) du lien dynamique à utiliser pour le lien actuel. si elle doit être ouverte à l'aide de Firebase Dynamic Links. Comme plusieurs dynamiques peuvent être configurés par projet, ce champ fournit la possibilité d'en choisir une explicitement. Si aucun domaine n'est indiqué, le premier domaine est utilisé par défaut.

L'exemple suivant montre comment envoyer un lien de validation de l'adresse e-mail qui s'ouvrira d'abord dans une application mobile en tant que lien dynamique Firebase (application iOS com.example.ios ou Android com.example.android). La le lien profond contiendra la charge utile de l'URL de suivi https://www.example.com/?email=user@example.com

Kotlin+KTX

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.");
                }
            }
        });

Firebase Auth utilise Firebase Dynamic Links lors de l'envoi d'une qui doit être ouvert dans une application mobile. Pour utiliser cette , vous devez configurer les liens dynamiques dans la console Firebase.

  1. Activez Firebase Dynamic Links:

    1. Dans la console Firebase, ouvrez la section Dynamic Links.
    2. Si vous n'avez pas encore accepté les conditions d'utilisation de Dynamic Links et créé un Dynamic Links domaine, faites-le maintenant.

      Si vous avez déjà créé un domaine Dynamic Links, prenez-en note. Dynamic Links de domaine ressemble généralement à l'exemple suivant:

      example.page.link

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

  2. Configurer des applications Android:

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

    1. Si vous prévoyez de gérer ces liens depuis votre application iOS, Vous devez spécifier l'ID du bundle iOS dans la console Firebase paramètres du projet. De plus, l'ID App Store et l'ID de développeur Apple Vous devez également spécifier un ID d'équipe.
    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 versions antérieures, vous devez définir votre ID de bundle iOS comme schéma personnalisé pour les messages entrants URL.
    4. Pour en savoir plus à ce sujet, consultez Instructions pour recevoir des liens dynamiques iOS

Gérer les actions relatives aux e-mails dans une application Web

Vous pouvez indiquer si vous souhaitez gérer le lien du code d'action à partir d'un site Web une application, puis vous redirigez vers une autre page Web ou une autre application mobile Une fois l'opération terminée, à condition que l'application mobile soit disponible. Pour ce faire, appelez setHandleCodeInApp(false) dans la ActionCodeSettings.Builder . Bien qu'aucun ID de bundle iOS ni nom de package Android ne soit requis, les fournir permettra à l'utilisateur pour être redirigé vers l'application spécifiée une fois le code d'action de l'e-mail terminé.

L'URL Web utilisée ici est celle configurée dans les modèles d'action par e-mail . Un service par défaut est provisionné pour tous les projets. Consultez personnalisation des gestionnaires de messagerie pour en savoir plus sur comment personnaliser le gestionnaire d'actions des 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 et d'analyser le lien profond pour vous.

Lorsque vous gérez des actions par e-mail, telles que la validation de l'adresse e-mail, le code d'action du Le paramètre de requête oobCode doit être analysé à partir du lien profond, puis appliqué. via applyActionCode pour que la modification soit prise en compte (autrement dit, l'adresse e-mail à valider).

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

Vous pouvez indiquer si vous souhaitez gérer le lien du code d'action dans votre l'application mobile, à condition qu'elle soit installée. Avec les applications Android, vous avez également la possibilité de le spécifier via la valeur booléenne installIfNotAvailable que l'application doit doit être installé si l'appareil le prend en charge et si ce n'est pas déjà fait. Si l'utilisateur clique sur le lien depuis un appareil qui n'accepte pas le il s'ouvre à partir d'une page Web. Pour ce faire, appelez setHandleCodeInApp(true) dans l'objet ActionCodeSettings.Builder. Vous devrez également indiquer 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 service par défaut est provisionné pour tous les projets. Consultez personnalisation des gestionnaires de messagerie pour en savoir plus sur comment personnaliser le gestionnaire d'actions des e-mails.

Dans ce cas, le lien vers l'application mobile envoyé à l'utilisateur est un lien FDL dont est l'URL du code d'action, configurée dans la console, avec la requête paramètres 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 nous vous recommandons d'utiliser la bibliothèque cliente FDL pour analyser le lien profond vous. Le code d'action peut être appliqué directement à partir d'une application mobile similaire à la façon dont ils sont gérés via le flux Web décrit dans Personnaliser les gestionnaires de messagerie.

Lorsque vous gérez des actions par e-mail, telles que la validation de l'adresse e-mail, le code d'action du Le paramètre de requête oobCode doit être analysé à partir du lien profond, puis appliqué. via applyActionCode pour que la modification soit prise en compte (autrement dit, l'adresse e-mail à valider).