Firebase Auth 使用电话号码和密码

Posted

技术标签:

【中文标题】Firebase Auth 使用电话号码和密码【英文标题】:Firebase Auth using phone number and password 【发布时间】:2018-03-03 06:05:19 【问题描述】:

我正在使用 Firebase 开发 android 应用。因此,我想使用 Firebase Auth。我有以下要求:

使用 Facebook 注册/登录 使用电子邮件/密码注册/登录 使用电话号码/密码注册/登录

前两个没问题,我跟着基本的tutorials。但是,电话号码/密码是这里的问题。 Firebase 仅支持电话号码/短信令牌(称为电话身份验证),但没有提及我的案例。我不想破解 Firebase 并使用它的实时数据库而不是 Auth 'database'。有没有更好的方法来实现这一目标?

谢谢。

【问题讨论】:

“破解 Firebase”? 我的意思是寻找一些解决方法。 【参考方案1】:

如果您同时拥有用户的电子邮件和电话,并且可以使用 Admin SDK,那么也许您可以将用户的电话号码交换为他的电子邮件,并在后台使用电子邮件和密码登录。

类似这样的东西(node.js)

admin.auth().getUserByPhoneNumber(phoneNumber)
    .then(user => 
        firebase.auth().signInWithEmailAndPassword(user.email, password);
    );

【讨论】:

@Alvis 所以它同时进行 OTP 验证和密码验证,对吧? @lazzy_ms 这允许使用他的手机和密码登录用户。与他的电子邮件密码相同。它不会阻止使用 OTP。所以我猜答案是肯定的。 登录时还要求 otp?【参考方案2】:

Firebase 电话身份验证使用 OTP(一次性密码)。这样用户就不用麻烦记住密码了。一旦通过身份验证,您将被注册。短信代码充当密码。但这是一次。通常,用户更喜欢这样的行为,您不必记住密码。如果您仍在寻找所需的方式,请参阅此链接并创建自定义身份验证方法。 https://firebase.google.com/docs/auth/android/custom-auth

【讨论】:

【参考方案3】:

我遇到了类似的问题 - 我将 firebase auth(email + password) 与 (phone+otp) 结合起来获得 phone+password auth -

https://medium.com/@shivampesitbng/firebase-phone-password-auth-in-vue-b94f15b8fb3d

【讨论】:

这正在创建一封电子邮件,其中嵌入了电话号码 - +91xxxx@domain.com。一个有趣的 hack。 很有趣,但问题是如果将来用户决定在他的帐户中添加他的电子邮件以进行登录,您将无法将两个 firebase 帐户链接在一起。在这种情况下,一位用户将拥有两个 Firebase 唯一 ID。【参考方案4】:

使用虚假电子邮件:

嗯,Firebase 不支持使用手机号码和密码登录,但它支持电子邮件和密码。因此,您可以使用您的手机号码创建虚假电子邮件。

即:78******69@yourdomain.com

此外,您可以使用它创建一个完整的身份验证系统。

注册:

输入用户手机和密码,进入下一页。

现在使用 Firebase 电话身份验证 (OTP) 来创建用户。如果处理成功,则在后台链接虚假电子邮件、密码凭据。

AuthCredential credential = EmailAuthProvider.getCredential(email, password); auth.getCurrentUser().linkWithCredential(credential);

登录:

输入手机和密码登录。将手机转换为虚假电子邮件,然后signInWithEmailAndPassword()

忘记密码:

将用户重定向到新页面和用户电话验证以验证用户。如果成功,请输入新密码并更改Email Auth的密码。

【讨论】:

这仅适用于电话/密码。问题是,如果我们需要同时支持电子邮件/密码和电话/密码怎么办,在这种情况下,您如何将有效的电子邮件地址与单个用户联系起来 检查Official DocumentationmAuth.getCurrentUser().linkWithCredential(credential) 使用 Firebase Admin SDK

以上是关于Firebase Auth 使用电话号码和密码的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 中使用电话号码登录 Firebase

未处理的异常:[firebase_auth/unknown] null:使用颤振/firebase 进行电话身份验证时出错

Flutter + Firebase Auth:有啥方法可以在 Web 上使用 Firebase 电话身份验证重新发送短信验证码?

使用 Unity 进行 Firebase 电话身份验证

如何合并两个 Firebase 帐户(一个使用电子邮件创建,另一个使用电话号码创建)?

使用firebase中的signInWithPhoneNumber禁用注册