Я создаю расширение нежелательных коммуникационных расширений для своего приложения, но когда я пытаюсь получить доступ к цепочке для ключей для деталей входа в систему, она не может получить доступ к цепочке для ключей.
Примечание. Для моего приложения добавлены права с общим доступом к цепочке для ключей, и общий доступ к цепочке для ключей включен.
Я попытался использовать этот код на моем контроллере представления расширений, и он возвращает код ошибки -25291
на SecItemCopyMatching
let queryLoad: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject,
kSecReturnData as String: kCFBooleanTrue,
kSecMatchLimit as String: kSecMatchLimitOne,
kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject
]
var result: AnyObject?
let resultCodeLoad = withUnsafeMutablePointer(to: &result) {
SecItemCopyMatching(queryLoad as CFDictionary, UnsafeMutablePointer($0))
}
if resultCodeLoad == noErr {
if let result = result as? Data,
let keyValue = NSString(data: result,
encoding: String.Encoding.utf8.rawValue) as? String {
// Found successfully
print(keyValue)
}
} else {
print("Error loading from Keychain: \(resultCodeLoad)")
}