I am facing something different type of problem. I am using Firebase Mobile number authentication in my App. When I am trying to send OTP to the same mobile number that I am using, the OTP is not sending. However, if I am sending OTP to the other mobiles from my mobile OTP is sending. I also found If I send OTP from another mobile to my number OTP is coming. Hence there is no issue of Mobile Number. On Debugging I found that this code block is not working
@Override
public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(verificationId, forceResendingToken);
Log.e(TAG, "onCodeSent: s - " + verificationId + " : t - " + forceResendingToken);
xVerificationId = verificationId;
}
For other numbers, it is working and verification and forceResendingToken are generating.
In my case, I realized that this problem happens with all numbers that has ported from one provider to another. With phone numbers that has never ported Firebase Authentication works like a charm!
If you have added your phone number in testing under firebase(Sign-in method->Phones). then please remove from there to get otp.
Are you implementing onVerificationCompleted
? In the following 2 cases, no OTP is sent, as explained in https://firebase.google.com/docs/auth/android/phone-auth:
In this case, you will directly get back a PhoneAuthCredential.
As explained already, The phone number is getting verified automatically either by
which is why onCodeSent()
isn't working.
Now, In order to get rid of the problem, you will need to implement onVerificationCompleted()
, most chances are that you have implemented it already but you don't know what put inside.
if you are inside onVerificationCompleted(), then you may not have the OTP with you but you definitely have phoneAuthCredential
, you just need to pass this variable to mAuth.signInWithCredential()
and that should lead to you to your desired output.
sample code for :
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
Toast.makeText(getApplicationContext(),"Verifying code Automatically",LENGTH_LONG).show();
signInWithCredential(phoneAuthCredential);
}
sample code for :
private void signInWithCredential(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");
} else {
// Sign in failed, display a message and update the UI
// Log.w(TAG, "signInWithCredential:failure", task.getException());
}
}
}
});
}
Update the SHA1 fingerprint. It worked for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With