问题标签 [keychainitemwrapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1724 浏览

ios - iOS 中用于 OAuth 令牌的钥匙串访问

我想使用Keychain ServicesiOS 来存储我的应用程序执行 Web 服务请求所需的 OAuth 访问令牌和刷新令牌。我一直在阅读Keychain Services Programming Guide并下载了GenericKeychain示例代码,但我很困惑:

  1. 文档中提供的代码与示例代码不同......我应该遵循哪种方法?
  2. 我在某处读到了您需要Data Protection在会员中心为 App ID 及其关联的配置文件启用的地方。但是,我没有阅读任何关于Data Protection在 Xcode 中启用目标功能的信息,而且似乎我无论如何都可以访问钥匙串......这很奇怪,但我想我也应该Data Protection在 Xcode 项目中启用,对吧?Data Protection苹果文档中描述的这些东西在哪里?是否在某处说我需要启用它进行Keychain管理?我没找到...
  3. 我发现的示例使用kSecClassGenericPassword钥匙串项目的类。由于我想管理 OAuth 相关信息,有没有更好的类我应该使用?也许kSecClassInternetPassword?有什么区别kSecClassGenericPassword
  4. 是否建议实例化一种KeychainWrapper类,还是将钥匙串相关方法作为类方法访问会更好?

提前致谢

0 投票
0 回答
35 浏览

ios - iOS 随机字符被丢弃在 uitextfield

我正在将我的用户电子邮件 ID、密码和身份验证令牌保存在钥匙串中。有时,仅密码文本会丢失一个字符,但其他人不会。我无法弄清楚是什么导致了这个问题。最初我把这些保存在NSUserDefaults 和同样的事情发生了。我认为转移到钥匙串可以解决这个问题。但它没有。我浪费了几天时间试图解决这个问题。任何帮助将不胜感激。

这就是我保存的方式:

并找回密码。

userPassword 或 txtPassword.text 永远不会在其他任何地方被访问或更改。

0 投票
0 回答
85 浏览

ios - 如何在 iPhone 设备中使用 keychainwrapper

当我在模拟器中使用它时它正在工作,但是当我在 iPhone 设备中运行它时它不起作用。

为什么会发生这种情况,如何做到这一点?

}

这是错误:

感谢!

0 投票
1 回答
842 浏览

ios - 获取详细信息时 iOS 钥匙串崩溃

使用钥匙串将登录信息存储到我的应用程序时遇到了一些问题。它工作得很好,并且会在我进出其他应用程序时显示信息,但是一旦我完全关闭应用程序并尝试重新打开它并单击以恢复登录信息,应用程序就会崩溃。我将附上代码以及错误日志。我确实明白,我在网上阅读的大多数人都没有使用这个版本的钥匙串,人们似乎使用替代钥匙串脚本,但希望有人遇到了这个问题。我有 3 个按钮和 2 个文本字段来测试它。一个用于用户名的文本字段,一个用于密码的文本字段,然后我有一个用于登录的按钮来保存信息,一个用于查看信息的按钮,然后是一个注销按钮。

谢谢。

12 月 31 日 01:58:13 Curtis-iPhone uDropOff 3[18034] : -[__NSCFData rangeOfCharacterFromSet:]: 无法识别的选择器发送到实例 0x147ed0338 Dec 31 01:58:13 Curtis-iPhone uDropOff 3[18034] : * 终止应用程序未捕获的异常'NSInvalidArgumentException',原因:'-[__NSCFData rangeOfCharacterFromSet:]:无法识别的选择器发送到实例 0x147ed0338'*13 Curtis-iPhone ReportCrash[18035]:为尸体制定报告[18034] uDropOff 3 Dec 31 01:58:13 Curtis-iPhone ReportCrash[18035]:保存类型“109_uDropOff 3”报告(最多 25 个中的 5 个)为 /var/移动/图书馆/日志/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips 12 月 31 日 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序 'UIKitApplication:uDropOff.uDropOff-3[0x44ca]' 崩溃。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态 报告(最多 25 个中的 5 个)为 /var/mobile/Library/Logs/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips Dec 31 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序'UIKitApplication: uDropOff.uDropOff-3[0x44ca]' 崩溃了。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态 报告(最多 25 个中的 5 个)为 /var/mobile/Library/Logs/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips Dec 31 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序'UIKitApplication: uDropOff.uDropOff-3[0x44ca]' 崩溃了。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态

0 投票
0 回答
1105 浏览

ios - iOS - 设置电子邮件时 KeychainItemWrapper 断言失败

我正在使用 KeychainItemWrapper 来存储我登录的用户电子邮件和密码。使用以下代码:

我收到以下错误:

如果我改变这一行:

对此:

有用。所以看来我无法将电子邮件设置为钥匙串。我应该怎么办?

0 投票
1 回答
1331 浏览

ios - 钥匙串有时会返回空值

我们使用本机钥匙链包装类来存储和检索钥匙链中的值。但在某些情况下,值会被删除/空

我们在我们的应用程序中启用了以下项目

  1. 位置服务开启- 始终处于初始状态,用户可以在设备设置中更改它
  2. Background Fetch - ON - 我们没有在代码中使用任何特定的方法。(即performfetchwithcompletionhandler代码中未使用/添加的方法)

上述情况是否可能对钥匙串项目有影响,或者是否有任何其他情况可能导致钥匙串项目被删除。

0 投票
1 回答
1172 浏览

ios - 应用程序在钥匙串中保存数据时崩溃

我正在使用KeychainItemWrapper类在钥匙串中保存数据,但由于未捕获的异常“NSInternalInconsistencyException”,我的应用程序因崩溃日志终止应用程序而崩溃,原因:“无法添加钥匙串项。”

这是一种在钥匙串中写入数据的方法

我的应用程序崩溃了

带有断言错误消息-[KeychainItemWrapper writeToKeychain] 中的断言失败

这是在 keychainItemData 中分配的值

我知道类似的问题已经在这里问了很多次,但对我没有任何帮助。

谁能帮我吗 ?有没有其他方法可以将数据保存在钥匙串中。

提前致谢。

0 投票
1 回答
727 浏览

ios - KeychainItemWrapper 导致 Distribution iOS build 崩溃

在我的 iOS 应用程序中,我使用 Apple 提供的 KeychainItemWrapper 来保存我的应用程序的一些重要数据。

当我使用开发人员配置文件在移动设备上部署应用程序时,应用程序运行良好,但是当我通过使用“分发”配置文件创建分发构建来部署相同的应用程序时应用程序崩溃。

我分析了设备日志,但无法找出问题所在。它使“writeToKeyChain”方法崩溃。我无法找出为什么这只发生在分发配置文件构建中。

知道为什么会这样吗?以前有人遇到过这个问题吗?

编辑:

KeychainItemWrapper 初始化代码

0 投票
1 回答
1244 浏览

ios - ios在KeyChain中存储登录令牌无法检索,很少随机,但始终如一

我正在使用 ios 钥匙串 ( keychainItemWrapper/ SSKeychain) 来存储我的应用程序的登录令牌并保持登录状态。目前,我在钥匙串中存储了一个简单NSDictionary的令牌,其中包含我的令牌、令牌到期和刷新令牌。我将它序列化为 NSData 并使用kSecValueData. 我还设置了kSecAttrAccountand kSecAttrService,但不要将它们用于身份验证。

这很有效,大约 95% 的时间。问题是,当我请求它检索令牌时,钥匙串随机、不可预测和零星地不返回数据。重新打开应用程序时,通常是在离开应用程序一段时间后。它不必来自后台,也不必在任何特定延迟之后。

它在询问我的NSData下方并返回<>而不是返回时特别失败<ABCD EFGH IJKL ....>。我认为它是零。因此,代码认为用户没有登录并立即将它们放在我的应用程序的注册/登录登录页面上,没有注销错误、令牌过期错误等。如果我最小化应用程序,然后重新打开,它几乎总是得到正确的钥匙串info 并且用户再次登录。

这在遇到时会产生令人困惑的体验。这也意味着用户无法保持这种真正的 100% 登录状态,偶尔会被随机注销。我一直无法预测或调试它并且更改钥匙串库,如下所示,并没有为我修复它。它发生在我和几个 TestFlight 用户身上,目前在我们的生产应用程序中。

关于如何保持钥匙串完整性和 100% 加载的任何建议?我们准备在令牌上实现 NSUserDefaults 备份存储,以便在这些情况下使用,我真的不想这样做来存储身份验证令牌。

存储:

加载:

我还尝试使用SSKeychain广泛可用的库 CocoaPod,以及钥匙串逻辑的包装器。这是一种更清洁的访问方式,但因同样的问题而失败。在这里我只是存储NSString值,因为没有直接的方法可以存储NSData在库中。

0 投票
1 回答
157 浏览

ios - UDID 总是从 IOS 中的钥匙串返回零数据?

我有一个应用程序,我在其中保存[[[UIDevice currentDevice] identifierForVendor] UUIDString]了这样的钥匙串:

但它总是给我零数据。它也不是第一次保存,有人可以帮我吗?