Firebase电话身份验证错误:SMS代码已过期

Luc*_*cem 6 android firebase firebase-authentication

根据文档实施FireBase手机身份验证后,我遇到了一些问题.

  1. 有些数字无法通过身份验证:我使用Airtel作为我的服务提供商.

在日志中,我可以确认代码已经发送但我没有在手机上收到它:

D/PhoneAuthenticating:onCodeSent:AM5PThBss5tbYdpNW5R9Q7o8zOYeHvd7lnZ1KBlS ...

  1. 切换到另一个运营商,我可以收到代码,但之后它说SMS代码在尝试验证后立即过期.我做了更多尝试,结果是一样的

W/PhoneAuthenticating:signInWithCredential:失败com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:短信代码已过期.请重新发送验证码以重试.来自com.google.android.gms.internal.mg.zz上的com.google.android.gms.internal.mg.zz(未知来源)com.google.android.gms.internal.mg. (未知来源)com.google.android.gms.internal.oc.onFailure(未知来源)位于android.os.Binder.execTransact(Binder)的com.google.android.gms.internal.nj.onTransact(未知来源)的.java:446)

抛出此异常:

FirebaseAuthInvalidCredentialsException

在firebase中,代码到期时间超过3599秒.验证所需的时间不到一分钟

Vij*_*nta 6

只是为了让您知道 firebase 电话身份验证中有一个自动检索部分,它将读取短信并在后台使其无效。该自动检索的回调应该用于验证您的用户,而无需他手动输入短信。


Luc*_*cem -3

终于得到了解决方案。在验证用户身份期间,我们使用相同的方法发送代码,只是添加了一个新参数。

    PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
    FirebaseAuth.getInstance().signInWithCredential(credential)
    Toast.makeText(this, "Verifying...", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

  • @RedM 我敢打赌,signInWithPhoneAuthCredential(..) 是他自己的方法,它将准确调用该方法;) (3认同)