我在 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)}
正如第一个答案的链接中提到的,有一个解决方法:
顺便说一句,有 xcode 的问题跟踪器吗?
基于@bash0ne的答案:
首先,按照@bash0ne所说的操作,即(针对新版本的Xcode进行修改):
然后,添加一个钥匙串组。为此,请在“签名和功能”(与之前相同的部分)中滚动到“钥匙串共享”部分。有一个“钥匙串组”表,您可以添加到此表中。
正如这个答案所说,钥匙串组需要具有以下格式:
<TEAM_ID>.<APP_NAME>.<GROUP_NAME>
如果单击“+”,Xcode 会添加默认组,Xcode 添加的默认组对我有用。
最后,有点单独的注释。评论中的用户询问如何检查“userInfo”是否有错误。您必须将错误转换为 NSError 然后进行检查(假设
error
的类型为 Error?
):
print((error! as NSError).userInfo)
我的问题(与上面相同)只需删除添加到权利文件中的 $(AppIdentifierPrefix) 字符串即可解决(如果您使用 Xcode UI 添加钥匙串共享组)。
这对我有用,但我不确定它是否对每个人都有效。转到您的目标并单击“签名和功能”选项卡。点击左上角“+功能”,添加“应用组”。添加您的 group.member.project 或您的钥匙串所在的任何内容,然后删除钥匙串功能。如果您收到有关您的权利文件的错误,请清除您的构建文件夹(产品 > 清除构建文件夹)并查看是否可以再次构建它!
自从我在做时将 SDK 更新到 Firebase 11.0.0 以来,这种情况就开始发生在我的项目中
Auth.auth().updateCurrentUser(unsharedUser, completion: { error in
...
我刚刚再次降级到 10.29.0,同时确定这是否是一个错误,或者我们必须以不同的方式做事才能使其正常工作。
在发行说明中没有找到与此相关的任何内容。