繁体   English   中英

Firebase 认证 email 定制

[英]Firebase authentication email customisation

我在我的应用程序中使用 firebase 身份验证,我正在设置无密码 email 注册。

我已经成功地从我自己的域设置了 email,但是如何更改在 email 中发送的文本以获取魔术链接? 我可以看到其他模板电子邮件的配置,但看不到这一个。

有问题的 email 是这个:

Hello,

We received a request to sign in to teamname using this email address. If you want to sign in with your youremail account, click this link: link

If you did not request this link, you can safely ignore this email.

Thanks,

无法编辑电子邮件模板。 这样做的原因是,这允许不良行为者使用 Firebase 向人们发送垃圾邮件,这会使服务面临风险。

要控制发送的消息,您必须自己发送并使用自定义电子邮件操作处理程序处理验证流程。 请参阅如何修改电子邮件确认消息 - Firebase

您还可以完全控制验证流程,然后使用Admin SDK 设置用户个人资料emailVerified标志

按照 Frank 的回答,您必须使用Firebase Admin SDK创建自己的电子邮件操作链接,然后将该链接放入您的自定义电子邮件中,然后您将使用任何服务(Sendgrid、Mailgun 等)发送该链接。

在此处查看如何创建操作链接: 生成电子邮件操作链接

使用Firebase认证服务时,有两种方法可以自定义email body。 但是,缺点是您必须创建一个后端来自己发送 email,而不是仅使用自动处理所有内容的 SDK 中的 function。

  1. 生成 email 操作链接:这是最有效的方法,它需要您使用 Firebase 管理员 SDK 生成一个链接,该链接将嵌入到发送给您的用户的电子邮件中。 下面是一个示例代码,展示了如何创建一个 API 以使用 Express 作为后端来发送定制的验证电子邮件:

     // Creating a POST route that sends customized verification emails app.post('/send-custom-verification-email', async (req, res) => { const {userEmail, redirectUrl} = req.body const actionCodeSettings = { url: redirectUrl } try{ // generate action like with the Firebase Admin SDK const actionLink = await getAuth().generateEmailVerificationLink(userEmail, actionCodeSettings) // embedding action link to customized verification email template const template = await ejs.renderFile('views/verify-email.ejs', { actionLink }) // send verification email using SendGrid, Nodemailer, etc. await sendVerificationEmail(userEmail, template, actionLink) res.status(200).json({message:'Email successfully sent'}) }catch(error){ // handle errors } })

    您可以在我在这里写的文章中阅读更多相关信息

  2. 完全控制工作流程:有了这个,Firebase Admin SDK 将不会用于生成操作链接,而是您自己生成链接并创建一个 API,它使用 Admin SDK 来处理要采取的操作每当单击链接时。

    为此,您必须创建两条 API 路由。 一个是发送电子邮件的路由,另一个是使用 Firebase Admin SDK 处理点击 email 所附链接时要采取的操作的路由。

自定义电子邮件正文的唯一方法是安装名为Trigger Email 的Firebase 扩展程序,但它会将您置于 Blaze 计划中,因为它会向第三方 API 发出请求,并且正如它们在扩展程序页面上指定的那样,您只需支付费用对于超过 Firebase 免费套餐的使用量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM