Я строю реагирующую версию с помощью firebase, и я использую плагин реактивную версию.
Я использую firebase auth phone, и когда я получаю код sms на свой телефон, я получаю 2 ошибки:
- когда я набираю правильный код смс я получаю ошибку
Недействительный код подтверждения SMS, использованный для создания идентификационной информации телефона. Пожалуйста, повторно отправьте код подтверждения смс и будьте
- когда я перезагружаю приложение, затем хочу снова ввести код, я получаю сообщение об ошибке
Срок действия смс-кода истек. Пожалуйста, повторно отправьте проверочный код, чтобы повторить попытку
как я могу решить эти проблемы?
кроме того, есть ли встроенные для отправки повторных смс?
это мой код
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 = await firebase.auth.PhoneAuthProvider.credential(UserStore.verificationId, code)
UserStore.setUserCredentials(credential)
AppStore.setAlreadyRegister(true)
this.authenticate(credential)
return credential
}catch(e){
console.log(e)
}
}
authenticate = (credential) => {
firebase.auth().signInAndRetrieveDataWithCredential(credential)
}