问题标签 [uickeychainstore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1047 浏览

ios - 从 Keychain 检索数据时,一小部分用户收到 errSecItemNotFound

我有一个在钥匙串中存储访问令牌的 iOS 应用程序。在过去的几个月里,我注意到大约 2% 的用户在尝试检索令牌时会收到errSecItemNotFound 。

所有相关的 StackOverflow 线程都指向后台任务是罪魁祸首(iOS KeyChain 未从后台检索值)或在查询字符串中包含无效参数(Keychain: Item 报告为 errSecItemNotFound,但在添加时收到 errSecDuplicateItem)。

我正在使用kSecAttrAccessibleAfterFirstUnlock所以后台任务应该能够很好地访问钥匙串。

此外,搜索查询如下所示:

(设置kSecAttrGeneric可能是多余的,但无论如何它不会影响查询的结果)

作为记录,我在SSKeyChainUICKeychainStore都遇到过这个错误。

任何提示将不胜感激:]

0 投票
0 回答
807 浏览

macos - SecItemDelete 对 OS X 上的共享钥匙串项目失败

我正在为已经发布的 mac 应用程序开发应用程序扩展。我需要在应用程序和扩展程序之间共享钥匙串项。在阅读项目方面,我能够成功地在应用程序和扩展程序之间“共享”钥匙串项目。问题是当我尝试从应用程序中删除钥匙串项目时。

应用程序和扩展程序都在权利中指定了 keychain-access-group,并在调用 SecItemCopyMatching、SecItemAdd 和 SecItemDelete 时使用应用程序前缀指定访问组。

基本上,钥匙串项目是从应用程序中创建和删除的。该扩展仅通过 SecItemCopyMatching 读取钥匙串项。问题是扩展读取的任何项目以后都不能被应用程序删除,因为 SecItemDelete 失败并出现以下错误。

我找不到任何有关此错误含义的文档,或者为什么调用 SecItemCopyMatching 会将钥匙串项的“所有者”更改为扩展名。

仅供参考,我正在使用 UIKeyChainStore 与钥匙串进行交互,但目前我不认为这是问题的原因。

0 投票
0 回答
404 浏览

ios - KeyChainStore 返回 34018 错误

我正在尝试在我的 iOS 应用程序中实现 KeyChain 共享,以在不同的 iOS 应用程序之间共享密码。

UICKeyChainStore为此目的使用该库。

AppDelegate.m(这有效)

在我的 ViewController 的 ViewDidLoad 方法中,相同的代码只是在控制台中打印 (null)。

当我深入研究图书馆时,抛出的错误消息是:

错误域=com.kishikawakatsumi.uickeychainstore 代码=-34018 “发生安全错误。” UserInfo=0x174e76540 {NSLocalizedDescription=发生安全错误。}

0 投票
0 回答
120 浏览

ios - iOS Locksmith 无法将存储的数据从服务“A”移动到服务“B”

在我正在开发的一个 iOS 应用程序中,我将一些信息存储在钥匙串中。为了与钥匙串进行交互,我正在使用 Locksmith ( https://github.com/matthewpalmer/Locksmith )

在我的应用程序的 v1 版本中,我正在通过使用在钥匙串中写入一些数据

现在,在 v2 中,我意识到我想将我的数据从“S1”迁移到“S2”,所以我开始编写一个小的迁移脚本来实现这一点。

本质上,我在做什么:

这是对我的代码的过度简化。

问题是d = nil每次,虽然我确定它存在(当我构建应用程序的 v1 时,我可以看到数据存在于那个位置)。

对此有什么想法吗?以前有人遇到过这个问题吗?

一些技术规格:

  • Xcode 8.3
  • 斯威夫特 3.1
  • 锁匠 3.0(通过迦太基)
  • 运行 iOS 10.3 的 iOS 模拟器 (iPhone 6s)

没试过真机。

0 投票
1 回答
111 浏览

ios - 我们可以访问在共享同一应用组的应用启用钥匙串共享之前保存的钥匙串项目吗?

我们可以访问在共享同一应用组的应用启用钥匙串共享之前保存的钥匙串项目吗?如果否,那么最好的解决方法是什么?