我有這樣的代碼取回從鑰匙串密碼對於一個給定的用戶名的NSString:的iOS SFHFKeychainUtils遇事*有時*錯誤-25308 errSecInteractionNotAllowed
NSError *error = nil;
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error];
if(error != nil)
// log the error
大部分時間對於大多數用戶來說,這一切工作正常 - 但對於一些特定的用戶,這似乎調用失敗(並進行不及格)它返回以下錯誤:
The operation couldn’t be completed. (SFHFKeychainUtilsErrorDomain error -25308.)
這顯然是errSecInteractionNotAllowed - 從我讀過我認爲這意味着要訪問鑰匙鏈需要某種用戶交互。
有沒有人有任何想法爲什麼這個調用可能會失敗的一些特定的用戶只?此鑰匙串條目特定於我的應用程序 - 那麼爲什麼需要任何用戶交互才能訪問它?
任何指針非常感謝...
我已經驗證了這一點上的iOS4,iOS5的和iOS6的。在所有iOS版本中,如果在設備處於鎖定狀態(例如後臺任務,報亭下載等)時讀取未標記爲kSecAttrAccessibleAlways的數據,則會返回errSecInteractionNotAllowed錯誤代碼。 – 2012-11-12 09:35:41
kSecAttrAccessibleAlways不是一個很好的選擇 - 通過使用類似kSecAttrAccessibleAfterFirstUnlock(或更嚴格的設置,如果適用於您的應用),您可以獲得更多的安全優勢,並且仍然可以避免錯誤。 – frankodwyer 2012-11-12 13:05:42
我可以確認,當應用程序在前臺,但設備被鎖定密碼時,鑰匙串庫給我-25308。謝謝 ! – Magurizio 2013-12-28 12:18:43