我花了几个小时学习 Parse 上的用户管理,认为考虑到它已经成为一项长期服务,这会很容易。
有关“自动用户”和会话的文档很差。
我正在尝试构建一个应用程序,允许用户在决定注册之前匿名存在(使用
[PFUser enableAutomaticUser]
)。
注册步骤:
[PFUser user]
创建用户对象并分配值signUpInBackgroundWithBlock
在执行上述操作时,我有时会遇到以下错误(是的,只是有时)。
[错误]:PFKeychainStore 无法获取键“currentUser”的对象,错误:-34018
[错误]:会话令牌无效(代码:209,版本:1.7.0)
我最终也得到了一个脏数据库,因为我不知道如何删除之前创建的自动用户。我尝试保留旧用户的对象 ID 并使用
deleteEventually
但这不起作用?
任何关于如何实现这一目标的建议都很棒。
在 iOS 上查看这个解析问题:https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/437。 我相信这是 iOS 中的一个问题,现已修复
其实这是keychain的一个bug,你可以到github上搜索一下。
几个月前,苹果的一些员工来我们公司给我们上课程,课程结束后,我们问了这个问题,他们也没有给我们解决方案
我已经通过使用以下方法解决了这个问题:
PFUser *user = [PFUser currentUser];
[user refreshInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!error) {
NSLog(@"Succesfully refreshed the current user.");
} else {
NSLog(@"Failed to refresh the current user with error %@", error);
}
}];
似乎
[PFUser currentUser]
返回了一个无效的会话令牌,这导致了 209 和 -34018 错误。仅当当前用户是匿名用户时,这才会出现问题。
您所询问的错误代码与不同的系统相关,并且具有不同的含义:
错误209:标准HTTP状态代码中没有具体定义此错误代码。然而,在某些应用程序或系统的上下文中,它可能具有特定的含义。如果没有更多上下文,很难提供准确的解释。
错误-34018:此错误与iOS钥匙串有关。它翻译为
errSecMissingEntitlement
。此错误意味着您的应用程序正在尝试使用它没有权限的钥匙串访问组。通常在钥匙串配置不正确时出现。确保应用程序中配置的钥匙串访问组与权利中配置的钥匙串访问组匹配。
要修复 iOS 应用程序中的错误 -34018,您可以按照以下步骤操作:
检查您的应用程序的权利:使用协同设计工具转储您构建的应用程序的权利。您可以通过在终端中运行以下命令来完成此操作:
$ codesign -d --entitlements :- /path/to/your.app
这将显示您的应用程序的权利。确保正确设置了 keychain-access-groups 权利。
设置您的应用程序的访问组:确保您的应用程序正在尝试使用它确实具有权限的钥匙串访问组。您可以查看“在应用程序集合中共享对钥匙串项目的访问权限”的“设置应用程序的访问组”部分以了解更多信息。
在 Xcode 中启用 KeyChain 共享: 如果您在 iOS 10 中使用 Xcode 8,则可能需要在“功能”选项卡中启用 KeyChain 共享。
请记住,此错误意味着您的应用程序正在尝试使用它没有权利的钥匙串访问组1。因此,确保您的应用程序具有正确的权利对于解决此错误至关重要。