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 qu'il soit connecté. 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 d'une URL de poursuite dans les actions par e-mail
Pour transmettre une URL d'action de manière sécurisée, le domaine de l'URL doit être ajouté à la liste blanche 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 FIRActionCodeSettings
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 :
Swift
Paramètre | Type | Description |
---|---|---|
URL |
Chaîne | Définit le lien (URL d'état/de poursuite) qui a différentes significations selon le contexte :
|
iOSBundleID |
Chaîne | Définit l'ID de bundle iOS pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Apple. |
androidPackageName |
Chaîne | Définit le nom du package Android pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Android. |
handleCodeInApp |
Bool | 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". |
linkDomain |
Chaîne | Lorsque des domaines de liens d'hébergement personnalisés sont définis pour un projet, spécifiez celui à utiliser lorsque le lien doit être ouvert par une application mobile spécifique. Sinon, le domaine par défaut est automatiquement sélectionné (par exemple, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
Chaîne | Obsolète. Ne spécifiez pas ce paramètre. |
Objective-C
Paramètre | Type | Description |
---|---|---|
URL |
NSString | Définit le lien (URL d'état/de poursuite) qui a différentes significations selon le contexte :
|
iOSBundleID |
NSString | Définit l'ID du bundle iOS pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Android ou Apple. |
androidPackageName |
NSString | Définit le nom du package Android pour aider Firebase Authentication à déterminer s'il doit créer un lien Web uniquement ou un lien mobile qui s'ouvre sur un appareil Android ou Apple. |
handleCodeInApp |
BOOL | 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". |
linkDomain |
NSString | Lorsque des domaines de liens Hosting personnalisés sont définis pour un projet, spécifiez celui à utiliser lorsque le lien doit être ouvert par une application mobile spécifique. Sinon, le domaine par défaut est automatiquement sélectionné (par exemple, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | Obsolète. Ne spécifiez pas ce paramètre. |
L'exemple suivant montre comment envoyer un lien de validation d'adresse e-mail qui s'ouvrira d'abord dans une application mobile à l'aide du domaine de lien Hosting personnalisé custom-domain.com
. Le lien profond contiendra la charge utile de l'URL de poursuite 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") // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = "custom-domain.com" 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; // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = @"custom-domain.com"; [actionCodeSettings setAndroidPackageName:@"com.example.android"]; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
Configurer les liens Firebase Hosting
Firebase Authentication utilise Firebase Hosting lorsqu'il envoie un lien destiné à être ouvert dans une application mobile. Pour utiliser cette fonctionnalité, vous devez configurer les liens Hosting dans la console Firebase.
Configurer les applications Apple :
- Si vous prévoyez de gérer ces liens depuis votre application, vous devrez configurer le domaine de lien Hosting en tant que domaine associé dans les fonctionnalités de votre application.
- Pour en savoir plus, consultez les instructions pour recevoir des liens d'hébergement iOS.
Configurer les applications Android :
- Si vous prévoyez de gérer ces liens depuis votre application Android, le nom du package de votre application doit être spécifié dans les paramètres du projet de la console Firebase. De plus, les empreintes 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, consultez les instructions pour recevoir des liens d'hébergement Android.
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 FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). 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 Hosting dont la charge utile est le URL
spécifié dans l'objet ActionCodeSettings
.
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. 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 FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). Vous devrez également spécifier le nom du package Android ou l'ID du 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 des modèles d'actions par e-mail. Une configuration 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 vers l'application mobile envoyé à l'utilisateur sera un lien Hosting 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 FIRActionCodeSettings
(Obj-C) ou ActionCodeSettings
(Swift). 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 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).