Phi*_*hil 5 javascript firebase vue.js firebase-authentication
我正在使用Javascript并与我的应用程序Vue集成firebase
场景(已搭建)
sign in用户登录的页面emailVerified属性中签名的用户应为 true问题
firebase.auth().createUserWithEmailAndPassword(email, password)方法时发送验证电子邮件报名方式
signup: async (email, password) => {
const user = await firebase.auth().createUserWithEmailAndPassword(email, password)
await user.user.sendEmailVerification()
return `Check your email for verification mail before logging in`
},
Run Code Online (Sandbox Code Playgroud)
所需的解决方案
我从 firebase console
我email作为参数传递或uid该方法应该向用户发送验证电子邮件,以便他们可以验证他们的电子邮件
完全废弃该signup方法,因为我不再需要它来发送验证邮件
无论如何,是否可以在不登录的情况下发送验证电子邮件?
您可以使用云功能生成电子邮件验证链接,并通过 Sendgrid、Mailjet 或 Mailgun 等电子邮件微服务或通过您自己的自定义 SMTP 服务器将其发送给用户。
当使用事件处理程序创建 Firebase 用户时,您将触发此云函数functions.auth.user().onCreate()。
由于您将通过 Firebase 控制台创建用户,因此无需用户登录即可触发云功能。
沿着这些思路:
exports.sendEmailVerification = functions.auth.user().onCreate((user) => {
const email = user.email;
const url = '...' //Optional, see https://firebase.google.com/docs/auth/custom-email-handler
const actionCodeSettings = {
url: url
};
// Use the Admin SDK to generate the email verification link.
return admin.auth().generateEmailVerificationLink(email, actionCodeSettings)
.then((link) => {
// Construct email verification template, embed the link and send the email
// by using custom SMTP server.
// or a microservice like Sendgrid
return ...
})
.catch((error) => {
// Some error occurred.
});
});
Run Code Online (Sandbox Code Playgroud)
您将在此处找到发送电子邮件的云函数的官方示例。
有没有办法在不登录的情况下发送验证电子邮件?
验证电子邮件只能从客户端 SDK 发送,并且只能在用户登录后发送。这样做是为了防止滥用 Firebase 服务器发送垃圾邮件。
如果 Firebase 现有的电子邮件验证流程不能满足您的需求,您可以实现自己的自定义流程,并在满足您的验证要求后使用管理 SDK 设置验证状态。
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |