Firebase 身份验证 iOS 12 无效令牌

Posted

技术标签:

【中文标题】Firebase 身份验证 iOS 12 无效令牌【英文标题】:Firebase Authentication iOS 12 invalid token 【发布时间】:2018-09-28 03:40:38 【问题描述】:

我有一个使用 Firebase 身份验证的应用,使用手机短信验证和 recaptcha(无 APNS)

如果您使用的是 ios 11.4.1,该应用程序可以在身份验证过程中正常工作

但是,如果您使用的是 iOS 12,则身份验证过程会导致令牌消息无效

错误域=FIRAuthErrorDomain 代码=17048“无效令牌。” UserInfo=NSLocalizedDescription=无效令牌。, error_name=INVALID_APP_CREDENTIAL

当前使用最新的 firebase ios SDK 5.9.0 最新版本的xcode iOS 12 最新的 Mac OS Mojave 10.14

我在 2018 年 6 月(3 个月前)看到了一个较早的问题,但不确定它是否与我们的项目有关 https://github.com/firebase/firebase-js-sdk/issues/916

https://github.com/firebase/firebase-ios-sdk

是否有解决方案或者这是 Firebase iOS SDK 错误?

【问题讨论】:

@KENdi 面临同样的问题。你们有没有机会解决它? 【参考方案1】:

在 Firebase 中为 APN 使用 .p12 文件时似乎出现了问题。我遇到了同样的问题并解决了它更改 .p8 的 .p12 证书立即改变了这一点,我的应用程序收到了 SMS。

您可以在 Apple Developer 帐户的“密钥”部分中生成 .p8 文件,下载文件并将其保存在安全的地方。此新密钥还会生成 Firebase 设置中需要的 KeyId。最后,您需要与您的 Apple Developer 帐户对应的 TeamId,您可以在 Profile 设置中找到它。

希望这可以帮助你。

【讨论】:

在我的情况下,使用 .p8 文件,一般的团队 ID(firebase 控制台 -> 项目设置 -> 常规 -> iOS 应用程序)设置是错误的。设置正确的团队 ID 解决了问题【参考方案2】:

这里也一样! 我遇到了完全相同的问题,原来我忘记在 的“URL Types”中将 Identifier 设置为 Client项目信息

希望它对你有用。

【讨论】:

记录在哪里?根据 Apple 的说法,您应该指定一个包含您公司的域名和应用程序名称的反向 DNS 字符串。 Firebase 文档在此处说明了使用 URL 方案的用途:firebase.google.com/docs/auth/ios/phone-auth 但正如您所见,他们尚未将其更新到 ios 12。但是如果您查看 firebase 的示例代码在 GitHub 上,您会惊奇地看到标识符字段应该用 Client 填充。这是 GitHub 链接:github.com/firebase/firebase-ios-sdk 这也是我的问题。感谢您抽出宝贵时间发布@sajedeNouri 现在还有效吗? Firebase 文档没有说明 firebase.google.com/docs/auth/ios/firebaseui ,这个答案应该更新 这并没有为我们解决问题。【参考方案3】:

我也使用您在问题中描述的相同配置,并且我正在使用它运行良好的这种 firebase 方法。这样您就可以检查您正在使用的凭据。另请查看 firebase 文档。

Auth.auth().signIn(withEmail: email, password: password)  (result, error) in

    if error == nil 

        guard let user = result?.user else 
            return
        
        // do your stuff
    

【讨论】:

以上是关于Firebase 身份验证 iOS 12 无效令牌的主要内容,如果未能解决你的问题,请参考以下文章

1 小时后身份验证令牌无效 - Firebase 中的磁盘持久性

API 无效的随机 Facebook iOS SDK 身份验证令牌

尝试使用 Firebase 验证电话号码时出现“无效令牌”

如何使用 Firebase 刷新令牌保持用户身份验证?

JWT 身份验证令牌在非 /api 路由中无效

如何针对 Firebase 验证身份验证令牌?