Я пытаюсь связать учетную запись электронной почты и аутентификацию телефона с помощью firebase, но при попытке связывания выдает ошибку.Если я использую метод "signInWithCredential", кажется, работает правильно, но если использование "linkWithCredential" выбрасывает FirebaseAuthInvalidCredentialsException
, я пытался использовать updatePhoneNumber, но выдает ту же ошибку, неверные учетные данные
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
mAuth.getCurrentUser().updatePhoneNumber(credential).addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "signInWithCredential:success");
Snackbar.make(findViewById(android.R.id.content), "Mobile Verified Successfully.",
Snackbar.LENGTH_SHORT).show();
} else {
Log.w(TAG, "signInWithCredential:failure", task.getException());
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
//mVerificationField.setError("Invalid code.");
Snackbar.make(findViewById(android.R.id.content), "Invalid Code.",
Snackbar.LENGTH_SHORT).show();
} else {
Log.d("signInWithCredential", task.getException().toString());
}
}
}
});
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
mAuth.getCurrentUser().linkWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "linkWithCredential:success");
Toast.makeText(PhoneAuthActivity.this, "linked accounts", Toast.LENGTH_SHORT).show();
FirebaseUser user = task.getResult().getUser();
// updateUI(user);
} else {
Log.w(TAG, "linkWithCredential:failure", task.getException());
Toast.makeText(PhoneAuthActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
// updateUI(null);
}
// ...
}
});