Android 具有电话号码的Firebase二次身份验证

Android 具有电话号码的Firebase二次身份验证,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,在我的Android应用程序中,有一个用户设置,用户可以在其中启用双因素身份验证。我正在使用Firebase电子邮件/身份验证 因此,一旦成功登录,如果启用双因素身份验证,用户需要在其注册的手机号码上获得一些PIN码,才能继续使用该应用程序 通过文档,我可以看到一种使用电话号码登录的方法 但是如何将其与电子邮件/密码身份验证集成。我需要更好的指导。这是@Bernd发现的 如果要将电话号码作为第二个身份验证因素,则需要有一个自定义身份验证提供程序,它执行第二个身份验证因素。不过,在这方面也存在一个

在我的Android应用程序中,有一个用户设置,用户可以在其中启用双因素身份验证。我正在使用Firebase电子邮件/身份验证

因此,一旦成功登录,如果启用双因素身份验证,用户需要在其注册的手机号码上获得一些PIN码,才能继续使用该应用程序

通过文档,我可以看到一种使用电话号码登录的方法

但是如何将其与电子邮件/密码身份验证集成。我需要更好的指导。

这是@Bernd发现的


如果要将电话号码作为第二个身份验证因素,则需要有一个自定义身份验证提供程序,它执行第二个身份验证因素。不过,在这方面也存在一个问题,2因素身份验证部分本身将取决于您。

为什么不将它们结合起来,并使用它们来监控状态

您应该能够在SharedReferences中存储三个值中的任意一个:SIGNED_OUT、PENDING、SIGNED_in

以下是我的建议流程:

  • 当用户未登录时,SharedReferences引用中的值应为“已注销”
  • 用户使用电子邮件密码登录。。如果成功,挂起保存在SharedReferences中;这意味着用户尚未完全通过身份验证。由于该值,将永远不会显示MainActivity(或其等效项)
  • 系统将提示用户使用电话号码登录。如果成功,SharedReferences中的值将再次更改为SIGNED_in,这表示用户已完全登录
为了使流程更加顺畅,如果验证状态在一段时间(比如10分钟)后没有改变,可以使用服务将SharedReferences引用的值从挂起重置为注销


我希望这有帮助。快乐的编码

是否要链接身份验证@PeterHaddad,在电子邮件/密码身份验证后,Firebase应发送OTP以登录进行二次身份验证Firebase Auth当前不支持多因素身份验证。它们当前允许链接多个提供商,包括电话号码,允许您使用其中一个提供商登录到同一个帐户,但只需要一个因素即可。@bojeil是否有任何调整来完成此firebase?我只是想让消防基地发送OTP?剩下的我能处理。有办法吗?