【问题标题】:Verification ID used to create the phone auth credential is invalid iOS用于创建手机身份验证凭据的验证 ID 无效 iOS
【发布时间】:2020-12-07 16:52:29
【问题描述】:

我无法登录并总是看到此错误消息:

用于创建手机身份验证凭据的验证 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()
        }
    })
}

【问题讨论】:

  • 您能否提供一些代码示例,说明您如何获取验证 ID 以及如何使用它?
  • @RazvanS。是的,当然
  • 在 Stack Overflow 上,不要显示代码图片。将代码复制到问题本身并对其进行格式化,以便于阅读、复制和搜索。
  • @DougStevenson 谢谢)我已经改过了。

标签: ios swift firebase-authentication


【解决方案1】:

我很难看到完整的代码流,因为您正在使用 AsyncTask 并将所有结果委托给外部。 您的代码中弹出的问题是该行

PhoneAuthProvider.provider().credential(withVerificationID: smsCode,
                                                                 verificationCode: verificationCode)

在这个方法中,verificationCode 应该是您通过短信收到的验证码,withVerificationID 应该是您在 verifyPhoneNumber 回调中获得的 verifyId。

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 2015-12-20
    • 2014-10-15
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    相关资源
    最近更新 更多