2017-06-12 44 views
4

我正在开发一个Android应用程序,我只想验证手机号码而无需创建用户帐户。可能吗?我使用下面的代码Firebase手机验证码为Android,我们可以只验证电话号码,而无需创建用户帐户

private void startPhoneNumberVerification(String phoneNumber) { 

    PhoneAuthProvider.getInstance().verifyPhoneNumber(
      phoneNumber,  // Phone number to verify 
      60,     // Timeout duration 
      TimeUnit.SECONDS, // Unit of timeout 
      this,    // Activity (for callback binding) 
      mCallbacks);  // OnVerificationStateChangedCallbacks 

} 



private void verifyPhoneNumberWithCode(String verificationId, String code) { 

    PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); 


    signInWithPhoneAuthCredential(credential); // this function is creating user account , if not present. But We Don't want this 


} 

下面的函数将创建用户帐户,如果用户帐户不存在,但我不希望创建帐户,我只是想验证用户输入的代码。有没有可用的回调方法?

private void signInWithPhoneAuthCredential(final PhoneAuthCredential credential) { 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 



         dialog.dismiss(); 
         FirebaseUser user = task.getResult().getUser(); 

         Toast.makeText(LoginActivity.this, "Success " + user.getEmail(), Toast.LENGTH_SHORT).show(); 


        } else { 

         Toast.makeText(LoginActivity.this, "Failed ", Toast.LENGTH_SHORT).show(); 

         verifyPhoneNumberWithCode(mVerificationId, editText.getText().toString().trim()); 

        } 
       } 
      }); 
} 

回答

1

验证电话号码会自动为该用户创建一个Firebase身份验证帐户。无法阻止创建此帐户,因为Firebase使用它来确保用户在下次启动应用程序时知道该用户。

2

您无法在过程中验证用户输入的内容,而无需将电话提供商链接到Firebase用户。

但是你可以不久后取消链接的用户帐户的电话,致电:

FirebaseAuth.getInstance().getCurrentUser(). 
     unlink(PhoneAuthProvider.PROVIDER_ID) 
     .addOnCompleteListener(this, onCompleteListener); 

有很多用途,用于验证用户有权访问这个电话号码,但不应该与登录它。我真的认为Firebase应该允许开发人员先验证,然后使用凭据登录。

另外:

有谷歌游戏服务的自动验证一个很好的机会。当调用PhoneAuthProvider.OnVerificationStateChangedCallbacks中的onVerificationCompleted(PhoneAuthCredential)时。这样用户不需要键入验证码,手机也不会自动链接。