gpt4 book ai didi

ios - 将其他变量添加到钥匙串(keychain)中

转载 作者:行者123 更新时间:2023-11-29 12:46:41 34 4
gpt4 key购买 nike

我目前正在使用这个版本的 KeyChain Wrapper对于我的 iOS 应用程序。但是,我很难添加其他变量。

我希望能够将以下值添加到我的钥匙串(keychain)中:

  • 用户名
  • 密码
  • 访问 token
  • 刷新 token

目前我正在做这样的事情:

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.myname.myapp" accessGroup:nil];
[keychainItem setObject:usernameField.text forKey:(__bridge id)(kSecAttrAccount)];
[keychainItem setObject:password1Field.text forKey:(__bridge id)(kSecValueData)];

我试过将多个对象设置为 kSecValueData,但它只是覆盖了之前设置的对象。

 [keychainItem setObject:password1Field.text forKey:(__bridge id)(kSecValueData)];
[keychainItem setObject:access_token forKey:(__bridge id)(kSecValueData)];
[keychainItem setObject:access_token forKey:(__bridge id)(kSecValueData)];

所以我想知道是否有人知道我应该怎么做...我是否应该将我的 initWithIdentifier 更改为类似 @"com.myname.myapp.accesstoken"的内容?还有其他人有更好的方法吗?我不知道 initWithIdentifieraccessGroup 是如何工作的。

最佳答案

所以我创建了一个变通办法,但我确信那里有更好的解决方案。

我创建了一个将 NSDictionary 转换为 JSON 字符串的方法,并将 JSON 字符串插入到钥匙串(keychain)密码中,这样您就可以安全地存储多个值。

NSDictionary *secretValues = [[NSDictionary alloc] initWithObjectsAndKeys:
password, @"password",
access_token, @"access_token",
refresh_token, @"refresh_token", nil];

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:secretValues
options:0
error:&error];


if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
[keychainItem setObject:jsonString forKey:(__bridge id)(kSecValueData)];
}

然后如果你想得到密码,你可以这样做:

- (NSString *) getPassword{

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.myname.app" accessGroup:nil];

NSString *password = [[NSString alloc] initWithData:[keychainItem objectForKey:(__bridge id)(kSecValueData)]
encoding:NSUTF8StringEncoding];

NSDictionary *jsonData =
[NSJSONSerialization JSONObjectWithData: [password dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: nil];

return jsonData[@"password"];
}

我确信存在更好的方法,但这是我能想到的最好方法。

关于ios - 将其他变量添加到钥匙串(keychain)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532646/

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