首页 > 解决方案 > Firebase 电话已验证

问题描述

Firebase中是否有方法可以调用以检查用户是否已验证电话号码?我已经一切正常(用户输入国家代码/电话号码,自动输入 OTP 代码并开始正确的活动),但我想检查用户是否已验证电话号码,以防他没有我想要禁止他访问某些活动。

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

标签: androidfirebasefirebase-authentication

解决方案


根据我在教程视频中使用的代码,如果未经验证, user.getPhoneNumber()将不包含任何数字。 它甚至不会出现在 Firebase 网站的身份验证列表中。

鉴于此知识,我不仅检查 user.getPhoneNumber() 是否为空,我还检查 user.getPhoneNumber() 是否不包含“+”(因为如果它包含“+”则表示有经过验证的电话号码)。

以下代码有助于解决“电子邮件已验证?” 和“电话号码已验证?” 难题。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();

if (user != null &&
(user.getPhoneNumber() == null ||
(user.getPhoneNumber() != null && 
!user.getPhoneNumber().contains("+")))
) {
   if (!user.isEmailVerified()) {
   verifyMsg.setVisibility(View.VISIBLE);
   editor.putString("capturegoogleloginonetime", "1");
   editor.apply();
   resendCode.setVisibility(View.VISIBLE);

   resendCode.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
             //send verification link
             FirebaseUser fuser = mAuth.getCurrentUser();
                                
             user.sendEmailVerification().addOnSuccessListener(new 
             OnSuccessListener<Void>() {
                  @Override
                  public void onSuccess(Void aVoid) {
                  Toast.makeText(v.getContext(), "Verification Email has been Sent.",
                  Toast.LENGTH_SHORT).show();
                  }

             }).addOnFailureListener(new OnFailureListener() {
                  @Override
                  public void onFailure(@NonNull Exception e) {
                  Toast.makeText(LoginActivity.this, 
                  "Error: Email not sent " + e.getMessage(),
                  Toast.LENGTH_SHORT).show();
                  }
                });
               }
             });
            }
           }
    
if (user != null && user.getPhoneNumber() != null 
&& user.getPhoneNumber().contains("+")) {
   SendUserToMainActivity();
}

if (user != null && user.isEmailVerified() ) {
   SendUserToMainActivity();
}

推荐阅读