Firebase 在 React Native 中无需电子邮件即可重置密码



向所有社区研究员嗨...... 我正在使用Firebase作为我的React Native应用程序的后端。在注册时,我要求用户提供他们的电话号码和电子邮件以及其他必需的详细信息,并且该信息存储在集合中。出于某种目的,我决定不使用电子邮件进行用户身份验证,而是制作了自己的"类型"电子邮件,其电话号码看起来像 phonenumber@domain.com(03658965280@gmail.com(

一切都按预期工作,直到我遇到密码重置功能。在密码重置屏幕上,如果我要求用户输入其电话号码并使用该电话号码,请从集合中获取该用户的电子邮件。现在,我有了用户的电子邮件,可以使用以下代码发送密码重置链接。

forgotPassword = (Email) => {
firebase.auth().sendPasswordResetEmail(Email)
.then(function (user) {
alert('Please check your email...')
}).catch(function (e) {
console.log(e)
})
}

现在我怀疑它不会发送密码重置电子邮件,因为我已经制作了自己的电子邮件版本,当提供给上述功能的电子邮件将被带到Firebase进行交叉检查时,它将无法验证电子邮件是否正确,从而导致不发送电子邮件。

请在这方面指导我,如果我的想法错误,请告诉我!

由于您创建了一个无效(或不存在(的电子邮件地址,因此内置的电子邮件验证和密码重置选项确实不适合您。

我能想到的几个主要选项:

  1. 分别存储电子邮件地址和电话号码。老实说,这是最好的解决方案,因为它可以清理无效数据。如果用户需要能够使用电话号码或电子邮件+密码登录,则可以向两个提供商注册,然后将此帐户链接在一起。
  2. 实现您自己的密码重置电子邮件发送,以便您可以拆分电子邮件。您仍然可以使用 Firebase 的验证处理程序,方法是使用管理员 SDK 生成链接,然后使用您自己的电子邮件发送脚本(和 SMTP 服务器(发送链接。
  3. 以有效的格式存储电子邮件+电话号码。例如,此电子邮件地址username+03658965280@domain.com实际上是username@domain.com的有效别名。因此,以这种格式,您可以将电话号码存储在电子邮件地址中,并且仍然使用内置的密码重置和电子邮件验证。

最新更新