gpt4 book ai didi

iOS SFHFKeychainUtils *有时* 失败并出现错误 -25308 errSecInteractionNotAllowed

转载 作者:IT王子 更新时间:2023-10-29 07:49:52 26 4
gpt4 key购买 nike

我有这段代码从给定用户名 NSString 的钥匙串(keychain)中取回密码:

NSError *error = nil;
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error];
if(error != nil)
// log the error

大多数情况下,对于大多数用户来说,这一切都工作正常 - 但对于某些特定用户,此调用似乎失败(并继续失败),并返回以下错误:

The operation couldn’t be completed. (SFHFKeychainUtilsErrorDomain error -25308.)

这显然是 errSecInteractionNotAllowed - 根据我的阅读,我认为这意味着访问钥匙串(keychain)需要某种用户交互。

有谁知道为什么这个调用可能只对某些特定用户失败?此钥匙串(keychain)条目特定于我的应用程序 - 那么为什么需要任何用户交互才能访问它?

非常感谢任何指点...

最佳答案

好的,所以我终于解决了这个问题。

最终我发现遇到问题的用户在他们的手机上设置了锁码。如果手机被锁定,钥匙串(keychain)系统将返回此 -25308 错误。

如果您只需要在应用程序在前台处于事件状态时访问钥匙串(keychain),您将永远不会看到此问题 - 但如果您需要在手机锁定或应用程序处于后台时继续处理,那么您会看到它。

我在其他地方读到 kechain 系统的默认访问属性是 kSecAttrAccessibleAlways - 但我认为这已经过时了。似乎钥匙串(keychain)系统的默认访问属性是这样的,当手机被密码锁定时,元素将不可用。

解决此问题的方法是更改​​ SFHFKeychainUtils 代码以在其管理的钥匙串(keychain)项目上设置特定的 kSecAttrAccessible 属性(原始代码没有这样做 - 大概是因为它早于这些属性)。

这个 wordpress updated version的 SFHFKeychainUtils 代码中包含修复程序 - 搜索 kSecAttrAccessible 以查看他们在何处添加了可访问属性代码。

希望这能帮助其他遇到此问题的人......

关于iOS SFHFKeychainUtils *有时* 失败并出现错误 -25308 errSecInteractionNotAllowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com