ios - iOS 钥匙串随机返回 -25300 错误(又名 errSecItemNotFound)
问题描述
我的应用程序面临一个奇怪的钥匙串行为:有时它返回-25300
状态而不是肯定存在的凭据。结果:已登录的用户随机变为“注销”。
应用重启无济于事,只有新用户授权。
不知何故,物品似乎从钥匙串中消失了。
在仔细查看了从钥匙串中保存和读取数据的代码并将其与 Apple 的示例进行比较后,我注意到我们kSecAttrService
在保存kSecClassGenericPassword
.
这里有一些代码片段:
func saveData(_ data: Data, for key: String) -> OSStatus {
let query: [CFString : Any] = [
kSecClass: kSecClassGenericPassword,
kSecAttrAccount: key,
kSecValueData: data,
kSecAttrAccessible: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
]
return SecItemAdd(query as CFDictionary, nil)
}
func readData(for key: String) -> String? {
let query: [CFString: Any] = [
kSecClass: kSecClassGenericPassword,
kSecAttrAccount: key,
kSecReturnData: kCFBooleanTrue as Any,
kSecMatchLimit: kSecMatchLimitOne
]
var result: AnyObject?
_ = withUnsafeMutablePointer(to: &result) {
SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
}
return (result as? Data).flatMap {
String(data: $0, encoding: .utf8)
}
}
kSecAttrService
那么,保存项目时缺少可能是kSecClassGenericPassword
钥匙串项目由于某种原因变得无法访问的原因,还是有任何其他原因?
谢谢
解决方案
推荐阅读
- c++ - 在吃豆人游戏上使用 system(" cls ") 而不用快门
- php - 提取多维数组的总和,包括嵌入的子数组
- spring-boot - OpenAPI Generator + SpringFox 记录额外不需要的端点
- java - javax.xml.parsers.FactoryConfigurationError:未找到提供程序 org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
- c# - C# - 数据库上下文转换返回
- python - 第一个时代比其他时代花费的时间更长
- java - 如何用更有效的方法替换 groupBy
- node.js - 将多个路由添加到单个路由后,值未正确路由
- javascript - 比较功能:当用户向比较滑块的左侧或右侧滑动时如何隐藏文本
- mapbox - Mapbox:如何为矢量类型生成源 URL