Storing keys in KeyChain with KeyChainItemWrapper

血红的双手。 提交于 2020-01-01 02:28:49

问题


I'm using KeyChainItemWrapper class, provided by Apple's Sample Code to save the authentication token to the keychain.

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier"JetTaxiApp_AuthToken" accessGroup:nil];  

But when I'm trying to set the value to keychain, an odd exception is raised

[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'

The keychain doesn't exist yet (at the moment of this call) What can cause this exception?


回答1:


You need to use standard keys, so here your @"auth_token" is incorrect.

The keys that can be used for this purpose and the possible values for each key are listed in the “Keychain Services Constants” section.

source, with list of valid constants: Keychain Services Reference

For instance, you can use:

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




回答2:


[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];  

For code snippet above, key param is only can use the keys provided from sdk. You can find all in SecItem.h



来源:https://stackoverflow.com/questions/7117885/storing-keys-in-keychain-with-keychainitemwrapper

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!