使用KeyChainItemWrapper在KeyChain中存储密钥

Oks*_*ana 15 iphone xcode objective-c keychain

我正在使用Apple的示例代码提供的KeyChainItemWrapper类来将身份验证令牌保存到钥匙串中.

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier"JetTaxiApp_AuthToken" accessGroup:nil];  
Run Code Online (Sandbox Code Playgroud)

但是当我试图将值设置为keychain时,会引发一个奇怪的异常

[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];
Run Code Online (Sandbox Code Playgroud)

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法添加Keychain项.'

钥匙串尚不存在(在此次通话时)可能导致此异常的原因是什么?

Vin*_*ine 33

你需要使用标准密钥,所以这里你@"auth_token"的不正确.

可以用于此目的的密钥和每个密钥的可能值列在"Keychain Services常量"部分中.

source,带有效常量列表:Keychain Services Reference

例如,您可以使用:

[_authenticationTokenKeychain setObject:authenticationToken forKey:(__ bridge NSString*)kSecValueData];

  • 使用ARC版本的keychainItemWrapper时,需要按以下方式执行:`[_authenticationTokenKeychain setValue:authenticationToken forKey:(__ bridge NSString*)kSecValueData];` (12认同)
  • @Interfector而不是使用**setValue**,使用**setObject** (2认同)