【问题标题】:Firebase custom verification emailFirebase 自定义验证电子邮件
【发布时间】:2021-05-26 15:22:03
【问题描述】:

我阅读了一些关于此主题的其他帖子,但最终无法弄清楚如何完成此操作。

我想从我自己的电子邮件提供商(例如 mailjet)发送通常从 firebase 本身发送的电子邮件验证电子邮件,原因是我想自定义电子邮件文本等。

我还阅读了有关creating a custom email handler 的信息,我也会这样做。但这只是处理用户单击电子邮件中的链接时发生的操作。

目前我在用户注册后从我的 Flutter 应用中调用:

user.sendEmailVerification();

这会使 firebase 向用户发送标准验证电子邮件。而不是这样做,我需要自己发送电子邮件。但是就像看到的here 我需要生成这个oobCode。生成正确的链接来处理。我只是找不到如何做到这一点的例子。自己发送电子邮件的正确方法是什么?也许我只是没有找到合适的资源。非常感谢。

【问题讨论】:

    标签: firebase flutter firebase-authentication


    【解决方案1】:

    您需要使用 Admin SDK 通过后端生成和发送电子邮件。最简单的是使用云函数,您可以从中使用Mailjet NodeJS API wrapper

    因此,在 Cloud Function 中,您需要:

    1. 调用Admin SDK的generateEmailVerificationLink()方法,返回一个链接
    2. 生成包含此链接的电子邮件
    3. 向用户发送电子邮件(请参阅 Mailjet NodeJS API 包装文档)

    文档中的here 详细说明了第一步。

    为了自定义验证链接的 URL(例如,您想重定向到 https://www.myrapp.com/emailVerifyScreen),您需要更改基本 URL,如下图所示(“自定义操作 URL”)。文档中还解释了here


    然后,当用户点击他/她收到的电子邮件中的链接时,您需要按照您在问题中提到的文档中的说明进行操作:Create custom email action handlers。请参阅第 4 点“通过调用 applyActionCode 处理电子邮件地址验证”。

    具体来说,在您的应用程序页面https://www.myrapp.com/emailVerifyScreen 中,您从URL 中获取查询字符串值(例如var actionCode = getParameterByName('oobCode');),然后使用这些值调用applyActionCode(actionCode) 方法。当这个方法返回的promise被满足时,就知道邮件已经通过验证了。

      var actionCode = getParameterByName('oobCode'); 
      auth.applyActionCode(actionCode).then((resp) => {
        // Email address has been verified.
    
        // TODO: Display a confirmation message to the user.
        // You could also provide the user with a link back to the app.
    
        // TODO: If a continue URL is available, display a button which on
        // click redirects the user back to the app via continueUrl with
        // additional state determined from that URL's parameters.
      }).catch((error) => {
        // Code is invalid or expired. Ask the user to verify their email address
        // again.
      });
    

    最后一点要注意:您不能单独直接获取oobCodegenerateEmailVerificationLink() 方法生成完整的 URL。

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多