Vous pouvez transmettre l'état via une URL continue lors de l'envoi d'actions par e-mail pour la réinitialisation du mot de passe ou la vérification de l'e-mail d'un utilisateur. Cela donne à l'utilisateur la possibilité de revenir à l'application une fois l'action terminée. De plus, vous pouvez spécifier s'il faut gérer le lien d'action par courrier électronique directement depuis une application mobile lorsqu'elle est installée au lieu d'une page Web.
Cela peut être extrêmement utile dans les scénarios courants suivants :
Un utilisateur, qui n'est pas actuellement connecté, peut tenter d'accéder à un contenu qui nécessite qu'il soit connecté. Cependant, l'utilisateur peut avoir oublié son mot de passe et donc déclencher 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 tentait d’accéder.
Une application ne peut offrir l'accès qu'à des comptes vérifiés. Par exemple, une application de newsletter peut demander à l'utilisateur de vérifier son adresse e-mail avant de s'abonner. L'utilisateur suivrait le flux de vérification des e-mails et s'attendrait à être renvoyé à 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'e-mail sur une application Apple, il s'attend à terminer le flux dans l'application ; la possibilité de transmettre l'état via l'URL continue rend cela possible.
La possibilité de transmettre un état via une URL continue est une fonctionnalité puissante fournie par Firebase Auth et qui peut améliorer considérablement l'expérience utilisateur.
Passer l'URL d'état/continuer dans les actions de courrier électronique
Afin de transmettre en toute sécurité une URL continue, le domaine de l'URL devra être ajouté à la liste blanche dans la console Firebase . Cela se fait dans la section Authentification en ajoutant ce domaine à la liste des domaines autorisés sous l'onglet Méthode de connexion s'il n'y est pas déjà.
Une instance FIRActionCodeSettings
doit être fournie lors de l'envoi d'un e-mail de réinitialisation de mot de passe ou d'un e-mail de vérification. Cette interface prend les paramètres suivants :
Rapide
Paramètre | Taper | Description |
---|---|---|
URL | Chaîne | Définit le lien (URL d'état/continue) qui a différentes significations dans différents contextes :
|
iOSBundleID | Chaîne | Définit l'ID du bundle. Cela tentera d'ouvrir le lien 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 du bundle principal de l'application. |
androidPackageName | Chaîne | Définit le nom du package Android. Cela tentera d'ouvrir le lien dans une application Android si elle est installée. |
androidInstallIfNotAvailable | Booléen | Spécifie s'il faut installer l'application Android si l'appareil la prend en charge et que l'application n'est pas déjà installée. Si ce champ est fourni sans packageName, une erreur est générée expliquant que le packageName doit être fourni en conjonction avec ce champ. |
androidMinimumVersion | Chaîne | Version minimale de l'application prise en charge dans 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 par e-mail sera d'abord ouvert dans une application mobile ou dans un lien Web. Le défaut est faux. Lorsqu'il est défini sur true, le lien du code d'action sera envoyé sous forme de lien universel ou de lien d'application Android 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 il sera redirigé vers l'application si elle est installée. |
dynamicLinkDomain | Chaîne | 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. Comme plusieurs domaines de liens dynamiques peuvent être configurés par projet, ce champ offre la possibilité d'en choisir un explicitement. Si aucun n'est fourni, le premier domaine est utilisé par défaut. |
Objectif c
Paramètre | Taper | Description |
---|---|---|
URL | NSString | Définit le lien (URL d'état/continue) qui a différentes significations dans différents contextes :
|
iOSBundleID | NSString | Définit l'ID du bundle. Cela tentera d'ouvrir le lien dans une application Apple si elle est installée. L'application doit être enregistrée dans la console. |
androidPackageName | NSString | Définit le nom du package Android. Cela tentera d'ouvrir le lien dans une application Android si elle est installée. |
androidInstallIfNotAvailable | BOOL | spécifie s'il faut installer l'application Android si l'appareil la prend en charge et que l'application n'est pas déjà installée. Si ce champ est fourni sans packageName, une erreur est générée expliquant que le packageName doit être fourni en conjonction avec ce champ. |
androidMinimumVersion | NSString | Version minimale de l'application prise en charge dans 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 | Indique si le lien d'action par e-mail sera d'abord ouvert dans une application mobile ou dans un lien Web. Le défaut est faux. Lorsqu'il est défini sur true, le lien du code d'action sera envoyé sous forme de lien universel ou de lien d'application Android 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 il sera redirigé vers l'application si elle est installée. |
dynamicLinkDomain | NSString | 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. Comme plusieurs domaines de liens dynamiques peuvent être configurés par projet, ce champ offre la possibilité d'en choisir un explicitement. Si aucun n'est fourni, le premier domaine est utilisé par défaut. |
L'exemple suivant illustre comment envoyer un lien de vérification 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 sera installée si elle n'est pas déjà installée et la version minimale est 12
). Le lien profond contiendra la charge utile de l'URL continue https://www.example.com/?email=user@example.com
.
Rapide
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. })
Objectif 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. }];
Configuration des liens dynamiques Firebase
Firebase Auth utilise Firebase Dynamic Links lors de l'envoi d'un lien destiné à être ouvert dans une application mobile. Pour utiliser cette fonctionnalité, les liens dynamiques doivent être configurés dans la console Firebase.
Activer les liens dynamiques Firebase :
- Dans la console Firebase , ouvrez la section Liens dynamiques .
Si vous n'avez pas encore accepté les conditions Dynamic Links et créé un domaine Dynamic Links, faites-le maintenant.
Si vous avez déjà créé un domaine Dynamic Links, prenez-en note. Un domaine Dynamic Links 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 intercepter le lien entrant.
Configuration des applications Android :
- 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 Firebase Console. De plus, les codes SHA-1 et SHA-256 du certificat de demande doivent être fournis.
- Vous devrez également configurer le filtre d'intention pour le lien profond dans votre fichier AndroidManifest.xml.
- Pour en savoir plus, reportez-vous aux instructions de réception de liens dynamiques Android .
Configuration des applications Apple :
- 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. De plus, l'identifiant App Store et l'identifiant Apple Developer Team doivent également être spécifiés.
- Vous devrez également configurer le domaine de liaison universelle FDL en tant que domaine associé dans les fonctionnalités de votre application.
- Si vous envisagez de distribuer votre application sur les versions iOS 8 et antérieures, vous devrez définir votre ID de bundle comme schéma personnalisé pour les URL entrantes.
- Pour en savoir plus, reportez-vous aux instructions de réception des liens dynamiques des plateformes Apple .
Gestion des actions de courrier électronique dans une application Web
Vous pouvez spécifier si vous souhaitez d'abord gérer le lien du code d'action d'une application Web, puis le rediriger vers une autre page Web ou une autre application mobile une fois l'opération terminée, à condition que l'application mobile soit disponible. Cela se fait en définissant handleCodeInApp
sur false
dans l'objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). Bien qu'un identifiant de bundle ou un nom de package Android ne soient pas requis, leur fourniture permettra à l'utilisateur de revenir vers l'application spécifiée une fois le code d'action de courrier électronique terminé.
L'URL Web utilisée ici est celle configurée dans la section des modèles d'action par courrier électronique. Un par défaut est fourni pour tous les projets. Reportez-vous à personnalisation des gestionnaires de courrier électronique pour en savoir plus sur la personnalisation du gestionnaire d'actions de courrier électronique.
Dans ce cas, le lien dans le paramètre de requête continueURL
sera un lien FDL dont la charge utile est l' URL
spécifiée dans l'objet ActionCodeSettings
. Bien que vous puissiez intercepter et gérer le lien entrant de votre application sans aucune dépendance supplémentaire, nous vous recommandons d'utiliser la bibliothèque client FDL pour analyser le lien profond pour vous.
Lors du traitement des actions de courrier électronique telles que la vérification du courrier électronique, 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 le courrier électronique soit vérifié.
Gérer les actions de courrier électronique 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 avez également la possibilité de 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 le lien est cliqué depuis un appareil qui ne prend pas en charge l'application mobile, il est ouvert à partir d'une page Web. Cela se fait en définissant handleCodeInApp
sur true
dans l'objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). Le nom du package Android ou l'ID du bundle de l'application mobile devra également être spécifié. L'URL Web de secours 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. Un par défaut est fourni pour tous les projets. Reportez-vous à personnalisation des gestionnaires de courrier électronique pour en savoir plus sur la personnalisation du gestionnaire d'actions de courrier électronique.
Dans ce cas, le lien d'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
. Cette dernière sera l' URL
d'origine spécifiée dans l'objet FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). Bien que vous puissiez intercepter et gérer le lien entrant de votre application sans aucune dépendance supplémentaire, nous vous recommandons d'utiliser la bibliothèque client FDL pour analyser le lien profond pour vous. Le code d'action peut être appliqué directement à partir d'une application mobile, de la même manière qu'il est géré à partir du flux Web décrit dans la section personnalisation des gestionnaires de courrier électronique .
Lors du traitement des actions de courrier électronique telles que la vérification du courrier électronique, 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 le courrier électronique soit vérifié.