Firebase电话已验证

时间:2019-10-11 22:16:32

标签: android firebase firebase-authentication

我可以调用Firebase中的方法来检查用户是否已验证电话号码吗?我已经可以正常进行所有工作(用户输入国家/地区代码/电话号码,自动输入OTP代码并开始适当的活动),但是我想检查用户是否已验证电话号码,以防万一他没有我想要的信息禁止他进行某些活动。

对于电子邮件,有isEmailVerified(),但是对于电话验证,只有getPhoneNumber方法。

3 个答案:

答案 0 :(得分:0)

如果一切正常,这意味着用户拥有一部经过验证的电话,这应该是一个公理:“如果用户通过了注册电话活动,这意味着他的电话已经过验证,那么您无需再次进行检查”。

如果您确实需要检查电话是否已通过验证,则必须手动执行此操作。如果仅将Firebase用作后端,则需要保存每部经过验证的电话(例如:“ + 2136xxxxxx”:“ true” )。

如果您正在使用其他后端SQL,则可以创建具有列user的表phoneIsVerified,并在需要时对其进行更新。

答案 1 :(得分:0)

您可以通过-

检查userId或电话号码是否为空
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

if(firebaseUser.getUid() == null || firebaseUser.getPhoneNumber() == null){
    // User is not logged in
}

已编辑

如果您希望用户通过电话验证再次登录,可以使用-

退出用户
if(firebaseUser.getUid() != null){
     // User is logged in
     FirebaseAuth.getInstance().signOut();
}

答案 2 :(得分:0)

我不确定您的应用程序是否正常运行,但据我了解:用户可以在未经身份验证的情况下使用您的应用程序。但是,您希望未经身份验证的用户只能访问有限数量的功能。

您在评论中提到,无论以前使用什么应用程序,用户都必须在每次新安装的应用程序中验证其电话号码。因此,您可以像这样使用SharedPreferences来发挥自己的优势:

  • 每次用户验证其电话号码时,请将一个布尔值(true)保存到SharedPreferences。
  • 当用户要访问仅对经过身份验证的用户可用的功能时,请检查保存的SharedPreferences布尔值以检查该用户是否经过身份验证。
  • 用户注销时,请记住删除/重置SharedPreferences布尔值。


要将布尔值保存到SharedPreferences,可以执行以下操作:

// create a SharedPreferences object and reference it with "AUTH_STATUS"
SharedPreferences sharedPreferences = getSharedPreferences("AUTH_STATUS", Context.MODE_PRIVATE);

// create an editor object from your sharedpreferences object
SharedPreferences.Editor editor = sharedPreferences.edit();

// save your boolean value to a reference called "status"
editor.putBoolean("status", true);

// save changes
editor.apply();

要检索保存的布尔值,可以执行以下操作:

// create a SharedPreferences object and reference it with "AUTH_STATUS"
SharedPreferences sharedPreferences = getSharedPreferences("AUTH_STATUS", Context.MODE_PRIVATE);

// get saved boolean value, default value should be false
boolean ab  = sharedPreferences.getBoolean("status", false);

要删除/重置SharedPreferences布尔值,只需将布尔值设置为false即可,如下所示:

// create a SharedPreferences object and reference it with "AUTH_STATUS"
SharedPreferences sharedPreferences = getSharedPreferences("AUTH_STATUS", Context.MODE_PRIVATE);

// create an editor object from your sharedpreferences object
SharedPreferences.Editor editor = sharedPreferences.edit();

// save your boolean value to a reference called "status"
editor.putBoolean("status", false);

// save changes
editor.apply();

我希望这会有所帮助。快活的编码!