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 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 général, lorsqu'un utilisateur commence un flux de réinitialisation de mot de passe ou de vérification d'adresse e-mail sur une application Apple qu’ils s’attendent à terminer le flux au sein de l’application ; la possibilité de l'état de la transmission via l'URL continue rend cela possible.
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.
Une instance FIRActionCodeSettings
doit être fournie lors de l'envoi
un e-mail de réinitialisation
du mot de passe ou un e-mail de validation. Cette interface prend le
les paramètres suivants:
Swift
Paramètre | Type | Description |
---|---|---|
URL |
Chaîne | Définit le lien (URL d'état/continue) qui a différentes significations selon le contexte:
|
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. |
androidInstallIfNotAvailable |
Bool | Indique si l'application Android doit être installée (si l'appareil est compatible) et que l'application 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 défini sur "true", le lien du code d'action sont envoyés sous forme de lien universel ou de lien Android App Links, et sont ouverts par l’application s’il est installé. 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. |
dynamicLinkDomain |
Chaîne | 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. Étant donné que plusieurs domaines de liaison dynamique peuvent être configurés par projet, ce champ permet d'en choisir un explicitement. Si aucun domaine n'est indiqué, le premier domaine est utilisé par défaut. |
Objective-C
Paramètre | Type | Description |
---|---|---|
URL |
NSString | Définit le lien (URL d'état/continue) qui a différentes significations selon le contexte:
|
iOSBundleID |
NSString | Définit l'ID du bundle. Cela tentera d'ouvrir le lien dans une application Apple si il est installé. L'application doit être enregistrée dans la console. |
androidPackageName |
NSString | Définit le nom du package Android. Le lien sera alors essayé dans une application Android si elle est installée. |
androidInstallIfNotAvailable |
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 |
NSString | Version minimale de l'application compatible avec ce flux. Si minimumVersion est spécifié, et une ancienne version de l'application est installée. l'utilisateur est redirigé vers le Play Store pour mettre à jour l'application. L'application Android doit être enregistré dans la console. |
handleCodeInApp |
BOOL | 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. |
dynamicLinkDomain |
NSString | 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. Étant donné que plusieurs domaines de liaison dynamique peuvent être configurés par projet, ce champ permet d'en choisir un 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 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
.
Swift
var actionCodeSettings = ActionCodeSettings.init() actionCodeSettings.canHandleInApp = true let user = Auth.auth().currentUser() actionCodeSettings.URL = String(format: "https://www.example.com/?email=%@", user.email) actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier! actionCodeSettings.setAndroidPakageName("com.example.android", installIfNotAvailable:true, minimumVersion:"12") // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = "example.page.link" user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in if error { // Error occurred. Inspect error.code and handle error. return } // Email verification sent. })
Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.handleCodeInApp = YES; FIRUser *user = [FIRAuth auth].currentUser; NSString *urlString = [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email]; actionCodeSettings.URL = [NSURL URLWithString:urlString]; actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier; // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = @"example.page.link"; [actionCodeSettings setAndroidPackageName:@"com.example.android" installIfNotAvailable:YES minimumVersion:'12']; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
Configurer Firebase Dynamic Links
Firebase Auth utilise Firebase Dynamic Links lors de l'envoi d'un lien destiné à être ouvert dans une application mobile. Pour utiliser cette , vous devez configurer les liens dynamiques dans la console Firebase.
Activez Firebase Dynamic Links :
- Dans la console Firebase, ouvrez la section Dynamic Links.
-
Si vous n'avez pas encore accepté les conditions d'utilisation de Dynamic Links et créé de domaine Dynamic Links, faites-le maintenant.
Si vous avez déjà créé un domaine Dynamic Links, notez-le. 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.
Configurer des applications Android :
- 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 valeurs SHA-1 et SHA-256 du certificat de l'application doivent être fournies.
- Vous devrez également configurer le filtre d'intent pour le lien profond dans votre fichier AndroidManifest.xml.
- Pour en savoir plus à ce sujet, consultez Instructions pour la réception d'Android Dynamic Links
Configuration des applications Apple:
- Si vous prévoyez de gérer ces liens depuis votre application, L'ID du bundle doit être spécifié dans la console Firebase paramètres du projet. En outre, vous devez également spécifier l'ID de l'App Store et l'ID de l'équipe de développeurs Apple.
- Vous devrez également configurer le domaine de lien universel FDL en tant que domaine associé dans les fonctionnalités de votre application.
- Si vous prévoyez de distribuer votre application sur iOS 8 et versions antérieures, vous devez définir votre ID de bundle comme schéma personnalisé pour les messages entrants URL.
- Pour en savoir plus, consultez les instructions sur la réception des liens dynamiques des plates-formes Apple.
Gérer les actions relatives aux e-mails 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
Objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). 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 service par défaut est provisionné pour tous les projets. Pour en savoir plus sur la personnalisation du gestionnaire d'actions de messagerie, consultez la section Personnaliser les gestionnaires de messagerie.
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 androidInstallIfNotAvailable
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 l'utilisateur clique sur le lien depuis un appareil qui ne prend pas en charge le
il s'ouvre à partir d'une page Web.
Pour ce faire, définissez handleCodeInApp
sur true
dans l'objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). La
le nom du package Android ou l'ID du bundle de l'application mobile doit également être
L'URL Web de remplacement utilisée ici, lorsqu'aucune application mobile n'est disponible, est
celui configuré dans la section
des modèles d'action par e-mail. Un 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 sera l'URL
d'origine spécifié dans l'objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). Bien que vous puissiez intercepter et gérer
de votre application sans aucune dépendance supplémentaire, nous vous recommandons
à l'aide de la bibliothèque cliente FDL
pour analyser le lien profond à votre place. Le code d'action peut
directement depuis une application mobile, de la même manière qu'avec un
le flux Web décrit dans le
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, c'est-à-dire pour l'adresse e-mail à valider.