Quickstart-android: How to stop Instant verification in phone number verfication

Created on 30 Jun 2017  路  26Comments  路  Source: firebase/quickstart-android

The phone authentication in firebase has two types of users on successful authentication as provided in the documentation:

Instant verification: in some cases the phone number can be instantly verified without needing to send or enter a verification code.

Auto-retrieval: on some devices, Google Play services can automatically detect the incoming verification SMS and perform verification without user action.

I would like to authenticate the users on the basis of sending SMS instead. So how could it be resolved. I would like to stop instant verification as well as auto retrieval and call the onCodeSent callback each time

Any help would be appreciated.

Most helpful comment

@samtstern A good reason to allow disabling this feature is for debugging. I cannot recreate the call for "onCodeSent" anymore because of the Instant Verification, which makes it impossible for me to debug my "Enter your verification code" screen anymore. I tried uninstalling the app / removing its data and nothing helps. At least for debugging purposes, we have to have this option. Am I missing something here?

All 26 comments

@chitrey we don't currently have a way to disable the instant verification or auto retrieval. Both of those are based on SMS though, can you explain why you'd want to turn them off? In our user studies they greatly increase sign up conversion rate.

Closing this issue as we are not planning to allow disabling this feature for now.

@samtstern A good reason to allow disabling this feature is for debugging. I cannot recreate the call for "onCodeSent" anymore because of the Instant Verification, which makes it impossible for me to debug my "Enter your verification code" screen anymore. I tried uninstalling the app / removing its data and nothing helps. At least for debugging purposes, we have to have this option. Am I missing something here?

@Barackos that's a good point. I'll make sure to add that to the feature request internally. One workaround is to use two devices. One one device (with no SIM) enter the phone number of the other device (with a SIM). Then you'll get the code flow.

Please make a way to disable instant verification, its a pain while debugging.

p.s. I wasted last 2 hours thinking i messed up my perfectly working program :(
Thank you for this thread, or i would've gone mad thinking it was my fault.

After verifying the code

PhoneAuthProvider.getCredential(verificationId,code);

onVerificationCompleted is never called. Why?

onVerificationCompleted is only called when instant verification or auto-retrieval occurs.

I'm interested in disabling instant verification for this reason: https://stackoverflow.com/q/45356169/3889068

Looks like @isaisachen replied on StackOverflow.

You can go to settings and disable you sim card. Enable it again and you should start getting verification codes. Though for instant verification I have not come across any way to disable that.

@Jitesh291 I'm confused. "disable your sim card... start getting verification codes" - so I assume it worked for you and you no longer got instant verification? And then what does your last sentence mean? You mean SMS auto-retrieval?

@isaisachen Thing is when you try this for the first time you will get the otp code
from Google but the next time you try it, it can cause instant verification
to get active. So if you are debugging and having problem with not
receiving otp code from google just disable your sim card and enable it
again. This will help you in getting the otp codes from google again for
one more time until you enter your code and instant verification gets
activated again.

Please note: I don't think there is any way you can disable instant
verification as of now. But you can always optimize your code in a way it
doesn't create any problem for you and your users.

Having the same problem, making it hard to debug the input screen. +1 for the feature request.

I tried to pass 0 to timeout parameter in verifyPhoneNumber

docs says:
the maximum amount of time you are willing to wait for SMS auto-retrieval to be completed by the library. Maximum allowed value is 2 minutes. Use 0 to disable SMS-auto-retrieval. If you specifies a positive value less than 30 seconds, library will default to 30 seconds.

i've done that but nothing happened

Same happens with me what Omar-ahmed mentions.

Passing 0 still the onCodeAutoRetrievalTimeOut gets called after 30 sec. Is this intended? I know I can do workaround to check if there is SIM available and then do call onCodeAutoRetrievalTimeOut manually. But this seems a bit hacky for me.

same is the case with me I tried to use 2 mobile phones by putting 1st mobile phone number in 2nd phone(where I am testing app) I get the code in 1st mobile I put it for verification but it is giving error of "invalid code"
PS: I am putting right code (tried many times)

onVerificationCompleted is only called when instant verification or auto-retrieval occurs.
https://github.com/firebase/quickstart-android/issues/296#issuecomment-314286033
@samtstern please look on this issue

yes its getting call automatically after instant verification but,its not verify the number correctly
please look at this link i have explained the problem in detail,please have a look

https://stackoverflow.com/q/58909735/12072674

Please make a way to disable instant verification, its a pain while debugging.

p.s. I wasted last 2 hours thinking i messed up my perfectly working program :(
Thank you for this thread, or i would've gone mad thinking it was my fault.

I messed up my last 2 days at this! Refactored my whole code so that's a plus.

i got 3 days to face this probelm.. hahaha

I had completely forgotten about this thread. I guess those two features are still not available to us developers who prefer "debugging" our app :D

solution to work with other phone cell is not really good. because i want to add feature to fill automaticly the OTP (for the first time). so hard to use other phone.

Spent the whole day finding the cause for this and certainly a very annoying thing if you're debugging. There should be a way to disable this!

@Jitesh291 's solution worked for me.

Settings -> Sim and Network -> Sim (1 or 2) -> Disable it.

Open the app and now try, auto verification shouldn't happen.

Can you tell me how to enable this feature to me? I have Samsung Galaxy S8 with Android 8. Here I cannot test this feature on my device. What should I do to enable this on my device because I would like to test how this works with my code?

This is a cool feature, but many users are concerned and confused when they experience it. They do not realize the verification was a success, and they see the experience as insecure. This should be something that we can disable.

Can you tell me how to enable this feature to me? I have Samsung Galaxy S8 with Android 8. Here I cannot test this feature on my device. What should I do to enable this on my device because I would like to test how this works with my code?

This is automatically done by Firebase. You need to enable "Phone Sign In" and your package name should match. Add debugging SHA1 key as well and you should start receiving the codes. And as everyone has already mentioned, we cannot disable the auto verification process. Sadness

@chitrey You: Instant verification: in some cases the phone number can be instantly verified without needing to send or enter a verification code.

Me: How can I enable this? I can use normal Phone Auth and it always asks verification code. i.e. no instant verification.

Was this page helpful?
0 / 5 - 0 ratings