2017-06-12 4 views
4

私はアンドロイドアプリで作業しています。ユーザーアカウントを作成せずに携帯電話番号を確認したいだけです。出来ますか?私は、ユーザーが入力したコードを確認したい、私は次のコードAndroid用のFirebase phone Auth、ユーザーアカウントを作成せずに電話番号を確認できるだけですか?

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は、開発者が最初に確認し、その後にログインするためにクレデンシャルを使用できるようにすべきだと私は本当に思っています。

Google Playサービスが自動的に確認される可能性があります。 PhoneAuthProvider.OnVerificationStateChangedCallbacksのonVerificationCompleted(PhoneAuthCredential)が呼び出されたとき。この方法では、ユーザーは認証コードを入力する必要はなく、電話機は自動的にリンクされません。

関連する問題