iOS:使用钥匙串存储用户名、密码和访问令牌
iOS: store userName, password and access token using keychain
我想使用钥匙串来存储用户名、密码和访问令牌。我添加了 keychainItem.h
和 keyChainItem.m
实现 here。这就是我所做的:
1- 我在 myViewController.h
中创建了一个 属性 钥匙串,然后在 viewDidLoad
中我将其实例化如下:
self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil];
当我得到用户名、密码和访问令牌时,我就是这样做的:
2- 存储用户名
[self.keychain setObject:userName forKey:(__bridge id)kSecAttrAccount];
当我测试它时,它有效。
现在我想添加密码和访问令牌。
对于我试过的访问令牌
[self.keychain setObject:accessToken forKey:(__bridge id)kSecAttrAccessible];
当我 运行 应用程序崩溃时:
Assertion failure in -[KeychainItemWrapper writeToKeychain] KeychainItemWrapper.m:322
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't update the Keychain Item.'
我尝试创建另一个钥匙串
self.keychainToken = [[KeychainItemWrapper alloc] initWithIdentifier:@“Token” accessGroup:nil];
然后我设置值:
[self.keychainToken setObject:accessToken forKey:(__bridge id)kSecValueData];
但是我得到了同样的错误。
我做的有什么问题吗?如何使用钥匙串存储用户、密码和 accessToken?
你可以这样使用它:
self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil];
[self.keychain setObject:userName forKey:(id)kSecAttrAccount];
[self.keychain setObject:password forKey:(__bridge id)(kSecValueData)];
[self.keychain setObject:accessToken forKey:(id)kSecAttrTokenID];
[self.keychain setObject:@"LoginService" forKey: (id)kSecAttrService];
我想使用钥匙串来存储用户名、密码和访问令牌。我添加了 keychainItem.h
和 keyChainItem.m
实现 here。这就是我所做的:
1- 我在 myViewController.h
中创建了一个 属性 钥匙串,然后在 viewDidLoad
中我将其实例化如下:
self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil];
当我得到用户名、密码和访问令牌时,我就是这样做的:
2- 存储用户名
[self.keychain setObject:userName forKey:(__bridge id)kSecAttrAccount];
当我测试它时,它有效。
现在我想添加密码和访问令牌。
对于我试过的访问令牌
[self.keychain setObject:accessToken forKey:(__bridge id)kSecAttrAccessible];
当我 运行 应用程序崩溃时:
Assertion failure in -[KeychainItemWrapper writeToKeychain] KeychainItemWrapper.m:322
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't update the Keychain Item.'
我尝试创建另一个钥匙串
self.keychainToken = [[KeychainItemWrapper alloc] initWithIdentifier:@“Token” accessGroup:nil];
然后我设置值:
[self.keychainToken setObject:accessToken forKey:(__bridge id)kSecValueData];
但是我得到了同样的错误。
我做的有什么问题吗?如何使用钥匙串存储用户、密码和 accessToken?
你可以这样使用它:
self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil];
[self.keychain setObject:userName forKey:(id)kSecAttrAccount];
[self.keychain setObject:password forKey:(__bridge id)(kSecValueData)];
[self.keychain setObject:accessToken forKey:(id)kSecAttrTokenID];
[self.keychain setObject:@"LoginService" forKey: (id)kSecAttrService];