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

How to verify email and change password with a different email service than what Firebase provided?

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

但是由于 Firebase 电子邮件不允许自定义、花哨的模板,我想使用不同的电子邮件服务,但我无法弄清楚如何使用 'auth.confirmPasswordReset' 和 'auth.applyActionCode'.

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

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

是否可以执行任何这些操作或使用 Firebase 无法使用的不同电子邮件服务?

如今实现自己的密码重置的最简单方法是完全实现自己的流程,然后 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。