Android 使用电话号码和密码进行Firebase身份验证

Android 使用电话号码和密码进行Firebase身份验证,android,firebase,authentication,firebase-authentication,Android,Firebase,Authentication,Firebase Authentication,我正在使用Firebase开发Android应用程序。因此,我想使用Firebase Auth。我有以下要求: 使用Facebook注册/登录 使用电子邮件/密码注册/登录 使用电话号码/密码注册/登录 前两个还行,我遵循基本原则。但是,这里的问题是电话号码/密码。Firebase仅支持此项的电话号码/短信令牌(称为电话认证),但没有提及我的案例。我不想入侵Firebase并使用它的实时数据库而不是身份验证“数据库”。有没有更好的方法来实现这一点 谢谢。Firebase电话验证使用OTP(一

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

  • 使用Facebook注册/登录
  • 使用电子邮件/密码注册/登录
  • 使用电话号码/密码注册/登录
前两个还行,我遵循基本原则。但是,这里的问题是电话号码/密码。Firebase仅支持此项的电话号码/短信令牌(称为电话认证),但没有提及我的案例。我不想入侵Firebase并使用它的实时数据库而不是身份验证“数据库”。有没有更好的方法来实现这一点


谢谢。

Firebase电话验证使用OTP(一次性密码)。这样,用户就不必麻烦地记住密码。一旦认证,您将被注册。短信代码充当密码。但这只是一次。通常,用户更喜欢这样的行为,你不必记住密码。如果您仍在寻找所需的方式,请参阅此链接并创建自定义身份验证方法。 我也有类似的问题- 我将firebase身份验证(电子邮件+密码)与(电话+otp)相结合,以获得电话+密码身份验证-


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

类似这样的内容(node.js)


使用假电子邮件:

Firebase不支持使用手机号码和密码登录,但支持电子邮件和密码。所以你可以用你的手机号码伪造一封电子邮件

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

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

注册:

  • 输入用户手机和密码,然后进入下一页

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

    AuthCredential credential=EmailAuthProvider.getCredential(电子邮件,密码)
    
    auth.getCurrentUser().linkWithCredential(凭证)

登录:

  • 输入手机和密码登录。在假电子邮件中转换手机,然后使用email和Password()登录
忘记密码:

  • 将用户重定向到新页面,并通过用户电话验证来验证用户。如果成功,请输入新密码并更改电子邮件验证的密码

这是在创建一封嵌入电话号码的电子邮件-
+91xxxx@domain.com
。一个有趣的黑客。有趣的是,问题是,如果将来用户决定在他的帐户中添加他的电子邮件进行登录,您将无法将两个firebase帐户链接在一起。在这种情况下,一个用户将有两个firebase唯一ID。“hack firebase”?我的意思是搜索一些解决方法。@Alvis所以它同时进行OTP验证和密码验证,对吗?@lazzy_ms这使用户能够使用他的手机和密码登录。与他电子邮件的密码相同。这并不妨碍使用OTP。所以我猜答案是肯定的。这只适用于电话/密码。问题是,如果我们需要同时支持电子邮件/密码和电话/密码,在这种情况下,如何将有效的电子邮件地址与单个用户链接检查
mAuth.getCurrentUser().linkWithCredential(credential)
使用Firebase管理SDK
admin.auth().getUserByPhoneNumber(phoneNumber)
    .then(user => {
        firebase.auth().signInWithEmailAndPassword(user.email, password);
    });