我无法登录,总是看到此错误消息:
用于创建电话身份验证凭证的验证ID无效
我试图添加我的手机,例如测试仪,但没有成功。 在Firebase控制台中启用了登录方法。
我发现了相同的问题here,但没有答案。 我使用了firebase's docs. 请帮我弄清楚。
这是我的代码:
func verifyPhone(_ phone: String) -> AsyncTask<String?> {
return AsyncTask<String?>({ observer, lifetime in
guard !lifetime.hasEnded else {
observer.sendInterrupted()
return
}
Auth.auth().languageCode = "ua"
PhoneAuthProvider.provider().verifyPhoneNumber(phone, uiDelegate: nil) { verificationID, error in
if let error = error {
observer.send(error: AppError(error))
return
}
observer.send(value: verificationID)
observer.sendCompleted()
}
})
}
func signInViaPhoneNumber(usingCode smsCode: String) -> AsyncTask<Void> {
return AsyncTask<Void>({ observer, lifetime in
guard !lifetime.hasEnded else {
observer.sendInterrupted()
return
}
guard let verificationCode = UserDefaultsStorage.verificationCode else {
observer.send(error: AppError.logic("Відсутній код верифікації"))
return
}
let credential = PhoneAuthProvider.provider().credential(withVerificationID: smsCode,
verificationCode: verificationCode)
Auth.auth().signIn(with: credential) { result, error in
if let error = error {
observer.send(error: AppError(error))
return
}
guard let firUser = result?.user else {
observer.send(error: AppError.logic("Відсутній юзер"))
return
}
let factory: ModelFactory = ModelFactoryImpl()
let appUser = factory.makeUser(id: firUser.uid, name: firUser.displayName ?? "", phone: firUser.phoneNumber ?? "")
AppService.shared.user = appUser
observer.send(value: ())
observer.sendCompleted()
}
})
}
答案 0 :(得分:1)
我很难看到完整的代码流,因为您正在使用AsyncTask并将所有结果委托给外部。 代码中弹出的问题是该行
PhoneAuthProvider.provider().credential(withVerificationID: smsCode,
verificationCode: verificationCode)
在这种方法中,VerificationCode应该是您通过SMS收到的代码,withVerificationID应该是您在verifyPhoneNumber回调中获得的VerificationId。