2017-06-12 43 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)時。這樣用戶不需要鍵入驗證碼,手機也不會自動鏈接。