ios - SecItemAdd() 返回 errSecInteractionNotAllowed (-25308)

标签 ios xcode keychain touch-id

我为将值存储到钥匙串(keychain)所做的任何尝试都失败了,错误代码为 errSecInteractionNotAllowed (-25308)。我一直在玩 Touch ID 和钥匙串(keychain),所以我可能更改了我不知道的权限,但我无法弄清楚我可以更改的任何内容可能会导致此问题。

在我摆弄钥匙串(keychain)之前,我能够成功地将一个值存储到钥匙串(keychain)中,因此它可能是设备中某处的设置。如果它是一个设置,我需要一些帮助来发现我需要更改的内容以再次将数据保存在钥匙串(keychain)中。此外,我还想要一些建议,以确保在尝试之前我可以访问保存到钥匙串(keychain)的权限。

static NSString *serviceName = @"myServiceName";

- (void) createTouchIdKeyChain:(NSString *)identifier password:(NSString*)password{
CFErrorRef error = nil;
SecAccessControlRef sacObject =
SecAccessControlCreateWithFlags( kCFAllocatorDefault,
                                kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
                                kSecAccessControlUserPresence,  &error);

NSData* secret = [password dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary* attributes = @{
                             (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
                             (__bridge id)kSecAttrService: serviceName,
                             (__bridge id)kSecAttrAccount: identifier,
                             (__bridge id)kSecValueData: secret,
                             (__bridge id)kSecAttrAccessControl: (__bridge id)sacObject,
                             (__bridge id)kSecUseOperationPrompt: @"create password test"
                             };
OSStatus status = SecItemAdd((__bridge CFDictionaryRef) attributes, nil);
ODLog(@"done");
}

最佳答案

在我的例子中,如果您尝试将具有相同标识符的两个项目存储到钥匙串(keychain),第二次尝试将失败,错误代码为 -25308。尝试删除第一个并重试。

关于ios - SecItemAdd() 返回 errSecInteractionNotAllowed (-25308),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26018810/

相关文章:

c# - 在 android/iOS Keystore C# 上存储私钥和证书 (.pem)

ios - 使用未解析的标识符 'FIRApp'

ios - IOS 中启动屏幕和初始屏幕之间的故障

iOS 应用企业部署 : Provisioning Profile for Libraries

ios - 钥匙串(keychain)找不到项目但无法创建项目

ios - 如何将字符串从uitextfield存储到KeyChain

ios - 从 Facebook 登录获取真实姓名以解析用户

ios - 函数的语法错误 -- 缺少参数

iOS标签栏 Controller 在 Controller 顶部添加导航按钮

ios - 场景更改后音乐停止播放 SKAudioNode Xcode 8