如何使用与 Firebase 提供的不同的电子邮件服务来验证电子邮件和更改密码?

Posted

技术标签:

【中文标题】如何使用与 Firebase 提供的不同的电子邮件服务来验证电子邮件和更改密码?【英文标题】:How to verify email and change password with a different email service than what Firebase provided? 【发布时间】:2018-08-27 14:37:22 【问题描述】:

我正在开发一个 Angular 项目,它使用 Firebase 来处理身份验证和数据存储。

但由于 Firebase 电子邮件不允许自定义、花哨的模板,我想使用不同的电子邮件服务,但我不知道如何准确使用“auth.confirmPasswordReset”等功能来忘记密码和“auth.applyActionCode” '。

忘记密码的问题是,要在没有电子邮件代码的情况下更改密码,用户需要进行身份验证,但要进行身份验证,他们需要知道自己的密码。我不知道我是否可以在确认第三方应用发送的我自己的自定义令牌后,仅通过知道他们的电子邮件来强制更改用户在 Firebase 中的密码。

电子邮件验证的问题感觉更容易,用户需要通过身份验证才能确认其帐户的电子邮件,但我需要编写自己的函数来确认验证码的有效性以及验证码是否有效,而不是使用操作代码,函数会将用户中的“emailVerified”值从 false 更改为 true。问题是,这似乎不可能,或者我找不到任何允许我这样做的功能。

是否有可能做到这一点,或者使用 Firebase 不可能使用不同的电子邮件服务?

【问题讨论】:

【参考方案1】:

现在实现自己的密码重置最简单的方法是完全实现自己的流程,然后use the Admin SDK to set the user's emailVerified property to true。例如在 Node.js 中,这很简单:

admin.auth().updateUser(uid,  emailVerified: true )

此功能仅在 Firebase Admin SDKs 中可用,这意味着您应该只在受信任的环境中运行它,例如您的开发机器、您控制的服务器或 Cloud Functions。

【讨论】:

据我所知,我是 Angular 的新手,Angular 应用程序是客户端应用程序,这意味着我无法控制“服务器”。所以我发现了 Admin SDK,但因此没有尝试。我认为 Cloud Functions 是在 Angular 中使用 Admin SDK 的最佳方式吗?谢谢你的帮助。 没有“最好”的单一方法,否则其他方法没有理由存在。但 Cloud Functions 是使用 Admin SDK 的有效环境。

以上是关于如何使用与 Firebase 提供的不同的电子邮件服务来验证电子邮件和更改密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个身份验证提供程序链接到 Firebase 帐户?

firebase:如何链接电子邮件验证和密码

如何使用 Firebase 9 电子邮件和密码创建用户并将该用户的其他数据保存在 firebase db 集合中?

如何合并 2 个不同的身份验证信息?

我如何从颤动的firebase实时数据库中检索数据

Firebase忘记密码 - 如何识别用户是否使用电子邮件或Facebook登录?