我已按照所有步驟爲Firebase配置手機身份驗證,但仍然無法從Firebase獲取OTP。Android Firebase手機身份驗證INVALID_APP_CREDENTIAL
是否需要將Play商店帳戶與Firebase關聯以進行電話身份驗證。
請幫忙!!!!!
我已按照所有步驟爲Firebase配置手機身份驗證,但仍然無法從Firebase獲取OTP。Android Firebase手機身份驗證INVALID_APP_CREDENTIAL
是否需要將Play商店帳戶與Firebase關聯以進行電話身份驗證。
請幫忙!!!!!
在Firebase身份驗證登錄方法中啓用電話身份驗證。
在onCreate方法中過去這段代碼。
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
// This callback will be invoked in two situations:
// 1 - Instant verification. In some cases the phone number can be instantly
// verified without needing to send or enter a verification code.
// 2 - Auto-retrieval. On some devices Google Play services can automatically
// detect the incoming verification SMS and perform verificaiton without
// user action.
Log.d(TAG, "onVerificationCompleted:" + credential);
//signInWithPhoneAuthCredential(credential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
// This callback is invoked in an invalid request for verification is made,
// for instance if the the phone number format is not valid.
Log.w(TAG, "onVerificationFailed", e);
Toast.makeText(SignUp.this, e.getMessage(), Toast.LENGTH_LONG).show();
if (e instanceof FirebaseAuthInvalidCredentialsException) {
// Invalid request
// ...
} else if (e instanceof FirebaseTooManyRequestsException) {
// The SMS quota for the project has been exceeded
// ...
}
// Show a message and update the UI
// ...
}
@Override
public void onCodeSent(String verificationId,
PhoneAuthProvider.ForceResendingToken token) {
// The SMS verification code has been sent to the provided phone number, we
// now need to ask the user to enter the code and then construct a credential
// by combining the code with a verification ID.
Log.d(TAG, "onCodeSent:" + verificationId);
// Save verification ID and resending token so we can use them later
mVerificationId = verificationId;
mResendToken = token;
// ...
}
};
我關掉自動驗證。用戶始終必須輸入代碼。
從用戶發送碼到用戶
String phoneNumber = phoneNumberET.getText().toString();
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phoneNumber, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
取代碼,並將其發送到驗證
String code = mCodeEt.getText().toString();
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, code);
signInWithPhoneAuthCredential(credential);
這種方法結果的方法
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithCredential:success");
FirebaseUser user = task.getResult().getUser();
//Sucess do what u want to do
// [START_EXCLUDE]
//updateUI(STATE_SIGNIN_SUCCESS, user);
// [END_EXCLUDE]
} else {
// Sign in failed, display a message and update the UI
Log.w(TAG, "signInWithCredential:failure", task.getException());
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
// The verification code entered was invalid
// [START_EXCLUDE silent]
mCodeEt.setError("Invalid code.");
// [END_EXCLUDE]
}
// [START_EXCLUDE silent]
// Update UI
//updateUI(STATE_SIGNIN_FAILED);
// [END_EXCLUDE]
}
}
});
}
所有代碼取自firebase doc ....
這已經完成,但仍然無法使其工作 –
我昨天做到了,工作正常。你有什麼錯誤嗎? –
Didi u啓用電話驗證在firebase? –