【问题标题】:Storing access token and refresh token in KeyChain在 KeyChain 中存储访问令牌和刷新令牌
【发布时间】:2015-04-30 23:21:06
【问题描述】:

我想知道如何在 iOS 钥匙串中有效地存储访问令牌、刷新令牌及其到期时间。

我看到的所有示例似乎都只存储一个键值组合。我们如何为一个钥匙串标识符存储多个键值?

如果有更好的方法来存储以上内容,请告诉我。

【问题讨论】:

    标签: ios objective-c keychainitemwrapper


    【解决方案1】:

    您首先要使用所需的键/值构建一个 NSDictionary。 接下来,您可以使用Lockbox 之类的东西,使用提供的setDictionary:forKey: 接口将该NSDictionary 存储到钥匙串中。

    更新:要更改存储在该字典中的值,您只需传递 NSMutableDictionary(这是常见的做法):

    NSMutableDictionary *mutableDict = [[LockBox dictionaryForKey:@"YourRefreshTokenDictionaryKey"] mutableCopy];
    mutableDict[@"access_token"] = @"NewAccessToken";
    [LockBox setDictionary:mutableDict forKey:@"YourRefreshTokenDictionaryKey"]; 
    

    仅供参考,NSMutableDictionaryNSDictionary 的子类,因此将其直接保存回钥匙串是安全的!

    【讨论】:

    • 看起来我无法修改字典了..(访问令牌会改变,刷新令牌也会改变)对此有什么想法吗?
    • @cableload :我添加了如何编辑字典并将其保存在我的答案中!
    • @ruffel,这就是我要找的……谢谢!这会奏效!