Android 如何检查用户何时已在Firebase中对手机进行身份验证?

Android 如何检查用户何时已在Firebase中对手机进行身份验证?,android,firebase,firebase-realtime-database,firebase-authentication,user-registration,Android,Firebase,Firebase Realtime Database,Firebase Authentication,User Registration,我有一个Android应用程序,用户在应用程序中注册他们的电话号码,我使用Firebase存储他们的手机和电子邮件,我还将他们的手机、全名和电子邮件保存在实时数据库中。实时数据库中的结构如下所示: Auto-Generated ID +16505553434: "some@email.com" email:"some@email.com" first name: "First name" last name: "Last name" phone: "+16505553434"

我有一个Android应用程序,用户在应用程序中注册他们的电话号码,我使用Firebase存储他们的手机和电子邮件,我还将他们的手机、全名和电子邮件保存在实时数据库中。实时数据库中的结构如下所示:

Auto-Generated ID 
+16505553434: "some@email.com"  
email:"some@email.com"  
first name: "First name"  
last name: "Last name" 
phone: "+16505553434"
当用户注册并注销后,当他们再次尝试使用该应用程序时,我想:如果用户存在,我不想再次进行电话身份验证,这应该只在他们注册时发生一次如果该用户存在于数据库中,我只想键入其密码并登录。但问题是我如何检查用户是否在Firebase中进行了电话注册。 如果用户已注册,我想显示输入密码的布局;如果用户未注册,我想显示
OtpView
,以便用户进行电话身份验证注册。 当用户注销FirebaseAuth.getInstance()时,getCurrentUser()为空,因此我无法使用它。 如何检查用户是否已注册

当用户注册并注销后,当他们再次尝试使用该应用程序时,我想:如果用户存在,我不想再次进行电话身份验证,这应该只在他们注册时发生一次如果该用户存在于数据库中,我只想键入其密码并登录

当用户通过电话号码进行身份验证时,不涉及密码。使用通过SMS发送的验证码进行身份验证。因此,如果用户注销,他无法简单地使用密码登录。他可以使用电话号码或任何其他提供商再次登录

但问题是我如何检查用户是否在Firebase中进行了电话注册。如果用户已注册,我想显示输入密码的布局;如果用户未注册,我想显示
OtpView
,以便用户进行电话身份验证注册

您只需对照电话号码检查数据库,查看用户是否已经拥有帐户。这样的查询可能会起到以下作用:

db.child("users").orderByChild("phoneNumber").equalTo("+16505553434");
如果您得到一个结果,这意味着用户存在。为了能够让用户“使用密码登录”,您需要启用这种身份验证。您可以在Firebase控制台中轻松完成此操作。但请记住,这是另一种不能与第一种身份验证结合使用的身份验证类型。检查有关的文档。因此,您可以使用电话号码或电子邮件和密码登录。您不能使用电话号码和密码登录

当用户注销FirebaseAuth.getInstance()时,getCurrentUser()为空,因此我无法使用它。如何检查用户是否已注册


当用户注销时,
FirebaseUser
对象为空。您无法从该对象获取数据。您所能做的就是查询数据库。

谢谢您的回复。实际上,我没有提到,在用户完成电话身份验证后,我要求他们添加电子邮件地址和密码,然后我使用此方法mAuth.getCurrentUser().linkWithCredential(credential)将电子邮件与他们的电话链接,凭证为AuthCredential credential=EmailAuthProvider.getCredential(电子邮件,密码);。当我希望用户登录时,我使用此方法mAuth.signInWithEmailAndPassword(emailInDB,password)。emailInDB我从实时数据库中检索到它,它拥有经过身份验证的手机。你忘了提到最重要的部分。因此,使用它,你得到了预期的行为,对吗?是的,通过查询,我得到了我用户的电话子项,它标识用户已注册,它按预期工作。因此,没有方法检查from特定手机已注册的身份验证部分?我的意思是,除了要根据firebase控制台的身份验证部分进行检查的实时数据库之外,新用户注册后将在其中显示。很高兴听到您获得了预期的行为。不,注销时没有。您只能知道。好的derId告诉我,用户已使用PhoneAuthProvider.PROVIDER\u ID进行注册,但在身份验证中未识别用户,即未证明用户确实已在数据库中注册,对吗?