Firebase iOS 10 访问钥匙串时出错

16

我在iOS 10设备上遇到了钥匙串的问题。只有iOS 10用户才会出现无法检索保存的用户的情况,认证是通过Firebase进行的。以下是错误信息:

启动时加载保存用户时出错:Error Domain=FIRAuthErrorDomain Code=17995 "访问钥匙链时发生错误。@c NSError.userInfo字典中的@c NSLocalizedFailureReasonErrorKey字段将包含有关遇到的错误的更多信息" UserInfo={NSLocalizedDescription=访问钥匙链时发生错误。@c NSError.userInfo字典中的@c NSLocalizedFailureReasonErrorKey字段将包含有关遇到的错误的更多信息, error_name=ERROR_KEYCHAIN_ERROR, NSLocalizedFailureReason=SecItemCopyMatching (0)}


你是在实际设备上还是在模拟器上尝试这个?iOS 10模拟器存在一个钥匙串漏洞。错误代码不同,但可能仍然相关:https://openradar.appspot.com/27844971 - Jordan
@JordanBondo 在设备上 - Tal Zion
你解决了吗?我似乎遇到了同样的问题。 - dev_mush
4个回答

19

正如第一个答案中提到的链接中所述,有一种解决方法:

  1. 前往您的 *.xcodeproj 文件
  2. 进入 "Capabilities" 选项卡
  3. 激活 "Keychain Sharing" 功能


顺便问一下,Xcode 有问题跟踪器吗?


4
我的钥匙链已启用,但我仍然遇到与OP相同的错误,有人知道@c NSError.userInfo字典在哪里吗?我甚至不知道如何检查它。 - Alec Mather
这可能是使用模拟器时出现的故障,正如在此Github评论中指出的那样:https://github.com/firebase/FirebaseUI-iOS/issues/818#issuecomment-587928935 - tobi_b
这个不起作用。你有没有遗漏其他重要的细节? - metamonkey
@metamonkey 这是遗漏的重要细节! - Joshua Wolff

1

在 @bash0ne 的答案基础上进行扩展:

首先,按照 @bash0ne 的建议去做,即(针对较新版本的 Xcode 进行修改):

  • 进入您的应用程序目标
  • 转到“签名和功能”选项卡
  • 点击右上角的加号
  • 搜索“密钥串共享”并选择它以激活它

然后,添加一个密钥串组。要这样做,请在“签名和功能”(与之前相同的部分)中滚动到“密钥串共享”部分。有一个“密钥串组”表格,您可以向此表格添加内容。

正如 this answer 所说,密钥串组需要具有此格式:

<TEAM_ID>.<APP_NAME>.<GROUP_NAME>

如果你点击“+”,Xcode会添加默认组,而Xcode添加的默认组对我很有用。

最后,稍微分开一点。评论中的用户问如何检查错误的“userInfo”。您必须将错误转换为NSError,然后进行检查,如下所示(假设error的类型为Error?):

print((error! as NSError).userInfo)


0
这对我有用,但我不确定它是否适用于每个人。转到您的目标并单击“签名和功能”选项卡。在左上角单击“+功能”,然后添加“应用程序组”。将您的group.member.project或其他密钥链添加到其中,并删除密钥链功能。如果出现有关您的授权文件的错误,请清除构建文件夹(Product> Clear Build Folder),然后再次尝试构建!

0
我的问题(与上述相同)被简单地解决了,只需要从授权文件中删除添加的$(AppIdentifierPrefix)字符串(如果您使用Xcode UI添加密钥链共享组)。

这可能会导致您的应用程序崩溃。 - Tal Zion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接