【问题标题】:Firebase reset password without email in React Native在 React Native 中,Firebase 无需电子邮件即可重置密码
【发布时间】:2020-04-22 02:02:24
【问题描述】:

嗨,所有社区成员... 我使用 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 进行交叉检查时,它将无法验证电子邮件是否正确因此导致不发送电子邮件。

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

【问题讨论】:

    标签: react-native firebase-authentication reset-password


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答,在第三个选项中,我们伪造的电子邮件(用户名+03658965280@domain.com)实际上在域中不存在。那么我应该如何指定发送密码重置链接的实际电子邮件(username@domain.com)?
    • 大多数邮件服务器都接受+.... 表示法,因此它们会将username+03658965280@domain.com 发送到username@domain.com 邮箱。
    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2016-09-19
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多