我正在尝试在钥匙串上写入一个条目,但它失败了,返回代码为-25243,文档只列出了“常见”错误代码,并指向“开放组”的方向寻求帮助。我已经下载了该文档,但还没有找到在哪里查看,该文档长度超过1000页,似乎列出了#define的负载。
有人可以帮忙吗?
答案 0 :(得分:5)
在设备上运行时,有一些原因导致您看到此错误。在尝试使用访问组将值存储到钥匙串时,我发现了这两种情况。
确保正确设置所有这些内容:
答案 1 :(得分:2)
好的,问题似乎是我试图在kSecAttrAccessGroup中存储一个值,将其更改为kSecAttrDescription并且一切都很好
答案 2 :(得分:2)
有点晚了,但值得回答。尝试将访问组与模拟器中的钥匙串一起使用时会发生此错误。
请注意GenericKeychain示例中的此片段。
#if TARGET_IPHONE_SIMULATOR
// Ignore the access group if running on the iPhone simulator.
//
// Apps that are built for the simulator aren't signed, so there's no keychain access group
// for the simulator to check. This means that all apps can see all keychain items when run
// on the simulator.
//
// If a SecItem contains an access group attribute, SecItemAdd and SecItemUpdate on the
// simulator will return -25243 (errSecNoAccessForItem).
#else
[genericPasswordQuery setObject:accessGroup forKey:(id)kSecAttrAccessGroup];
#endif
答案 3 :(得分:1)
我最近遇到了这个问题,结果发现我有多个开发者帐户,而Xcode选择了“错误的”开发者证书来签署我的调试版本。此证书与App Id不属于同一个开发人员,因此该应用程序无法再访问该Keychain组。
一旦我强制代码签名使用正确的开发人员证书,那么错误就消失了。