使用 Firebase iOS 10 访问钥匙串时出错

问题描述 投票:0回答:5

我在 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 objective-c keychain ios10
5个回答
20
投票

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

  1. 转到您的*.xcodeproj
  2. 转到“功能”选项卡
  3. 激活“钥匙串共享”


顺便说一句,有 xcode 的问题跟踪器吗?


1
投票

基于@bash0ne的答案:

首先,按照@bash0ne所说的操作,即(针对新版本的Xcode进行修改):

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

然后,添加一个钥匙串组。为此,请在“签名和功能”(与之前相同的部分)中滚动到“钥匙串共享”部分。有一个“钥匙串组”表,您可以添加到此表中。

正如这个答案所说,钥匙串组需要具有以下格式:

<TEAM_ID>.<APP_NAME>.<GROUP_NAME> 

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

最后,有点单独的注释。评论中的用户询问如何检查“userInfo”是否有错误。您必须将错误转换为 NSError 然后进行检查(假设

error
的类型为
Error?
):

print((error! as NSError).userInfo)


0
投票

我的问题(与上面相同)只需删除添加到权利文件中的 $(AppIdentifierPrefix) 字符串即可解决(如果您使用 Xcode UI 添加钥匙串共享组)。


0
投票

这对我有用,但我不确定它是否对每个人都有效。转到您的目标并单击“签名和功能”选项卡。点击左上角“+功能”,添加“应用组”。添加您的 group.member.project 或您的钥匙串所在的任何内容,然后删除钥匙串功能。如果您收到有关您的权利文件的错误,请清除您的构建文件夹(产品 > 清除构建文件夹)并查看是否可以再次构建它!


0
投票

自从我在做时将 SDK 更新到 Firebase 11.0.0 以来,这种情况就开始发生在我的项目中

Auth.auth().updateCurrentUser(unsharedUser, completion: { error in
...

我刚刚再次降级到 10.29.0,同时确定这是否是一个错误,或者我们必须以不同的方式做事才能使其正常工作。

在发行说明中没有找到与此相关的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.