Google 致力于为黑人社区推动种族平等。查看具体举措

Génération de liens d'action par e-mail

Les applications mobiles doivent parfois interagir avec les utilisateurs et les inviter à effectuer certaines actions en envoyant des e-mails.

Les Firebase administrateur SDKs offrent la possibilité d'envoyer des e - mails contenant des liens utilisateurs qu'ils peuvent utiliser pour réinitialisations de mot de passe, vérification de l' adresse e - mail et de connexion par messagerie électronique. Ces e-mails sont envoyés par Google et leur personnalisation est limitée.

Si vous souhaitez plutôt utiliser vos propres modèles d'e-mails et votre propre service de livraison d'e-mails, vous pouvez utiliser le SDK Firebase Admin pour générer par programmation les liens d'action pour les flux ci-dessus, que vous pouvez inclure dans les e-mails à vos utilisateurs.

Cela vient avec les avantages suivants :

  • Personnalisez les modèles d'e-mails. Cela inclut la possibilité d'ajouter de nouveaux styles et une image de marque personnalisée, de modifier le libellé et les logos, d'adresser les utilisateurs par leur prénom au lieu de leur nom complet, etc.
  • Appliquer différents modèles selon le contexte. Par exemple, si l'utilisateur vérifie son e-mail pour s'abonner à une newsletter, le contexte peut devoir être fourni dans le contenu de l'e-mail. Un autre exemple est la connexion par lien de messagerie : dans un scénario, cela peut être déclenché par le même utilisateur ou sous forme d'invitation par un autre utilisateur. Le contexte devrait être inclus dans l'e-mail.
  • Localisez des modèles d'e-mails personnalisés.
  • Possibilité de générer le lien à partir d'un environnement de serveur sécurisé.
  • Possibilité de personnaliser la façon dont le lien doit être ouvert, via une application mobile ou un navigateur, et comment transmettre des informations d'état supplémentaires, etc.
  • Possibilité de personnaliser le domaine de lien dynamique utilisé pour les flux d'applications mobiles lors de la construction du lien d'action par e-mail, et même de spécifier un domaine de lien dynamique différent en fonction du contexte ou de l'application mobile.

Initialiser ActionCodeSettings

Avant de pouvoir générer un lien d'action e - mail, vous devrez peut - être initialiser un ActionCodeSettings exemple.

ActionCodeSettings vous permettent de passer l' état supplémentaire via une URL continue qui est accessible après que l'utilisateur clique sur le lien e - mail. Cela permet également à l'utilisateur de revenir à l'application une fois l'action terminée. De plus, vous pouvez spécifier si vous souhaitez gérer le lien d'action par e-mail directement depuis une application mobile lors de son installation ou depuis un navigateur.

Pour les liens destinés à être ouverts via une application mobile, vous devez activer Firebase Dynamic Links et effectuer certaines tâches pour détecter ces liens à partir de votre application mobile. Reportez - vous aux instructions sur la façon de configurer Firebase dynamique Liens pour les actions e - mail.

Pour initialiser un ActionCodeSettings exemple, fournir les données suivantes:

Paramètre Taper La description
url chaîne de caractères

Définit le lien (état/continuer l'URL) qui a différentes significations dans différents contextes :

  • Lorsque le lien est traité dans les widgets d'action web, c'est le lien profond dans le continueUrl paramètre de requête.
  • Lorsque le lien est traité dans l'application directement, c'est le continueUrl paramètre de requête dans le lien profond du Dynamic Link.
iOS ({bundleId: string}|undefined) Définit l'ID de l'ensemble iOS. Cela essaiera d'ouvrir le lien dans une application iOS si elle est installée. L'application iOS doit être enregistrée dans la console.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Définit le nom du package Android. Cela essaiera d'ouvrir le lien dans une application Android si elle est installée. Si installApp est adopté, il précise si vous souhaitez installer l'application Android si l'appareil prend en charge et l'application n'est pas déjà installé. Si ce champ est fourni sans packageName , une erreur est renvoyée en expliquant que le packageName doit être fournie conjointement avec ce domaine. Si minimumVersion est spécifié, et une ancienne version de l'application est installée, l'utilisateur est pris au Play Store pour mettre à niveau l'application. L'application Android doit être enregistrée dans la console.
handleCodeInApp (booléen|non défini) Si le lien d'action par e-mail sera d'abord ouvert dans une application mobile ou un lien Web. Le défaut est faux. Lorsqu'il est défini 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 faux, le code sera d'abord envoyé au widget Web, puis continuer, redirigera vers l'application si elle est installée.
dynamicLinkDomain (chaîne|non défini) Définit le domaine de lien dynamique (ou sous-domaine) à 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 domaine le plus ancien est utilisé par défaut.

L'exemple suivant illustre comment envoyer un lien de vérification de courrier électronique qui ouvrira ses portes dans une application mobile d' abord comme Firebase Dynamic Link (iOS app com.example.ios ou Android app com.example.android où l'application va installer si pas déjà installé et la version minimale est 12). Le lien profond contiendra l'URL continuer la charge utile https://www.example.com/checkout?cartId=1234 . Le domaine de liaison dynamique est utilisé coolapp.page.link , qui doit être configuré pour une utilisation avec Firebase Dynamic Links.

Node.js

const actionCodeSettings = {
  // URL you want to redirect back to. The domain (www.example.com) for
  // this URL must be whitelisted in the Firebase Console.
  url: 'https://www.example.com/checkout?cartId=1234',
  // This must be true for email link sign-in.
  handleCodeInApp: true,
  iOS: {
    bundleId: 'com.example.ios',
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12',
  },
  // FDL custom domain.
  dynamicLinkDomain: 'coolapp.page.link',
};

Java

ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
    .setUrl("https://www.example.com/checkout?cartId=1234")
    .setHandleCodeInApp(true)
    .setIosBundleId("com.example.ios")
    .setAndroidPackageName("com.example.android")
    .setAndroidInstallApp(true)
    .setAndroidMinimumVersion("12")
    .setDynamicLinkDomain("coolapp.page.link")
    .build();

Python

action_code_settings = auth.ActionCodeSettings(
    url='https://www.example.com/checkout?cartId=1234',
    handle_code_in_app=True,
    ios_bundle_id='com.example.ios',
    android_package_name='com.example.android',
    android_install_app=True,
    android_minimum_version='12',
    dynamic_link_domain='coolapp.page.link',
)

Aller

actionCodeSettings := &auth.ActionCodeSettings{
	URL:                   "https://www.example.com/checkout?cartId=1234",
	HandleCodeInApp:       true,
	IOSBundleID:           "com.example.ios",
	AndroidPackageName:    "com.example.android",
	AndroidInstallApp:     true,
	AndroidMinimumVersion: "12",
	DynamicLinkDomain:     "coolapp.page.link",
}

C#

var actionCodeSettings = new ActionCodeSettings()
{
    Url = "https://www.example.com/checkout?cartId=1234",
    HandleCodeInApp = true,
    IosBundleId = "com.example.ios",
    AndroidPackageName = "com.example.android",
    AndroidInstallApp = true,
    AndroidMinimumVersion = "12",
    DynamicLinkDomain = "coolapp.page.link",
};

Pour en savoir plus, voir Passing Etat Actions E - mail .

Pour générer un lien de réinitialisation de mot de passe, indiquez le courrier électronique de l'utilisateur existant et une option ActionCodeSettings objet. L'opération sera résolue avec le lien d'action par e-mail. L'email utilisé doit appartenir à un utilisateur existant.

Node.js

// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
admin
  .auth()
  .generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(userEmail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

Java

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generatePasswordResetLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

Python

email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

Aller

email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

C#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

Une fois le lien généré, il peut être inséré dans l'e-mail de réinitialisation du mot de passe personnalisé, puis envoyé par e-mail à l'utilisateur correspondant à l'aide d'un serveur SMTP personnalisé.

Si vous n'utilisez pas le mot de passe par défaut page de destination de réinitialisation et la construction de votre propre gestionnaire personnalisé, voir la création de gestionnaires d'action e - mail personnalisé .

Pour générer un lien de vérification électronique, fournissez le courrier électronique non vérifiées de l' utilisateur existant et une option ActionCodeSettings objet. L'opération sera résolue avec le lien d'action par e-mail. L'email utilisé doit appartenir à un utilisateur existant.

Node.js

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
admin
  .auth()
  .generateEmailVerificationLink(useremail, actionCodeSettings)
  .then((link) => {
    // Construct email verification template, embed the link and send
    // using custom SMTP server.
    return sendCustomVerificationEmail(useremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

Java

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

Python

email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

Aller

email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

C#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

Une fois le lien généré, il peut être inséré dans l'e-mail de vérification personnalisé, puis envoyé par e-mail à l'utilisateur correspondant à l'aide d'un serveur SMTP personnalisé.

Si vous n'utilisez pas la page de destination de vérification de messagerie par défaut et la construction de votre propre gestionnaire personnalisé, voir la création de gestionnaires d'action e - mail personnalisé .

Avant de pouvoir authentifier les utilisateurs via une authentification lien e - mail, vous devez activer la connexion de lien e - mail pour votre projet Firebase.

Pour générer un signe dans le lien, fournir l'email de l'utilisateur et un ActionCodeSettings objet. Le ActionCodeSettings objet est nécessaire dans ce cas de fournir des informations sur l' endroit où retourner l'utilisateur après que le lien est cliqué pour la connexion à la fin. L'opération sera résolue avec le lien d'action par e-mail.

Contrairement à la réinitialisation du mot de passe et à la vérification de l'e-mail, l'e-mail utilisé n'a pas nécessairement besoin d'appartenir à un utilisateur existant, car cette opération peut être utilisée pour inscrire de nouveaux utilisateurs dans votre application via un lien e-mail.

Node.js

// Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
admin
  .auth()
  .generateSignInWithEmailLink(usremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(usremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

Java

String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}

Python

email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)

Aller

email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)

C#

var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);

Une fois le lien généré, il peut être inséré dans l'e-mail de connexion personnalisé, puis envoyé par e-mail à l'utilisateur correspondant à l'aide d'un serveur SMTP personnalisé.

En savoir plus sur l' authentification des utilisateurs avec Firebase en utilisant des liens e - mail . Cela aidera à fournir des informations sur la façon de terminer la connexion une fois que l'utilisateur a cliqué sur le lien et est redirigé vers l'application.