簡體   English   中英

iOS,鑰匙串 kSecAttrAccount 未保存

[英]iOS, Keychain kSecAttrAccount not saving

獲取數據時:

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
NSString *user = [[NSUserDefaults standardUserDefaults] valueForKey:@"ACC"];
NSString *pass = [keychain objectForKey:CFBridgingRelease(kSecAttrAccount)];

保存數據時:

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
[[NSUserDefaults standardUserDefaults] setObject:[jsonResult objectForKey:@"user"] forKey:@"ACC"];
[keychain setObject:[jsonResult objectForKey:@"token"] forKey:CFBridgingRelease(kSecAttrAccount)];

我正在重新使用幾年前使用過的代碼。 但是,現在我遇到了部分無法正常工作的問題。

對於它的價值,我使用的是 KeyChainItemWrapper 版本:1.2(Objective-c)

[[NSUserDefaults standardUserDefaults] valueForKey:@"ACC"]工作正常,並被保存,但是存儲CFBridgingRelease(kSecAttrAccount)的值不會保存。 運行提取代碼時,在保存代碼之后,我只得到(null)

我使用 xcode 8.3.1 和模擬器版本 10,運行 iPhone 7 版本 10.3。

最新的 IDE 版本和 iOS 版本是唯一改變的東西

對於將數據保存和檢索到鑰匙鏈,請確保使用 Apple 默認的 ARC 版本。

保存到鑰匙鏈:-

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"Your identifire" accessGroup:nil];
  [keychainItem setObject:appleUserId forKey:(id)CFBridgingRelease(kSecAttrAccount)];

從鑰匙鏈中檢索數據:-

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"Your identifire" accessGroup:nil];
        
        NSString *savedUserID = [keychainItem objectForKey:(id)CFBridgingRelease(kSecAttrAccount)];

有關更多信息,請查看官方鏈接:

https://developer.apple.com/documentation/foundation/1587932-cfbridgingrelease

https://gist.github.com/dhoerl/1170641

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM