根据文档实施FireBase手机身份验证后,我遇到了一些问题.
在日志中,我可以确认代码已经发送但我没有在手机上收到它:
D/PhoneAuthenticating:onCodeSent:AM5PThBss5tbYdpNW5R9Q7o8zOYeHvd7lnZ1KBlS ...
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秒.验证所需的时间不到一分钟
我使用firebase构建react native,并使用插件react-native-firebase。我实现了 firebase auth 电话,当我将短信代码发送到我的手机时,我得到了 2 个错误:
用于创建手机认证凭证的短信验证码无效。请重新发送验证码短信
短信代码已过期。请重新发送验证码重试
我该如何解决这些问题?另外,有内置发送重发短信吗?
那是我的代码
confirmPhone = async (phoneNumber) => {
return new Promise((res, rej) => {
firebase.auth().verifyPhoneNumber(phoneNumber)
.on('state_changed', async (phoneAuthSnapshot) => {
switch (phoneAuthSnapshot.state) {
case firebase.auth.PhoneAuthState.AUTO_VERIFIED:
await this.confirmCode(phoneAuthSnapshot.verificationId, phoneAuthSnapshot.code, phoneAuthSnapshot)
res(phoneAuthSnapshot)
break
case firebase.auth.PhoneAuthState.CODE_SENT:
// await userSettings.set(AUTH_KEYS.VERIFICATION_ID, phoneAuthSnapshot.verificationId)
UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
res(phoneAuthSnapshot)
break
case firebase.auth.PhoneAuthState.AUTO_VERIFY_TIMEOUT: // or 'timeout'
UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
res(phoneAuthSnapshot)
case firebase.auth.PhoneAuthState.ERROR:
UserStore.setErrorConfirmationCode(phoneAuthSnapshot.error)
rej(phoneAuthSnapshot)
break
}
})
})
}
confirmCode = async (verificationId, code, phoneAuthSnapshot) => {
UserStore.setCodeInput(code)
try{
const credential = …Run Code Online (Sandbox Code Playgroud)