这是一个错误吗?或者匿名用户的工作流程是否有所不同?
Is this a bug? Or does the anonymous users workflow occur differently?
问题描述
我正在使用最新版本的解析服务器和最新的 iOS SDK 创建涉及匿名用户的简单注册流程。发生的事情是用户在尝试注销时收到以下错误:
invalid session token (Code: 209, Version: 1.13.0)
重现步骤
我的应用程序启动并在我的 AppDelegate.swift 文件中执行以下代码。
let parseConfig = ParseClientConfiguration {
[=10=].applicationId = "insertAppIdHere"
[=10=].clientKey = "insertClientKeyHere"
[=10=].server = "https://MyParseServer.com/parse"
}
Parse.initializeWithConfiguration(parseConfig)
PFUser.enableAutomaticUser()
PFUser.currentUser()!.saveInBackground()
没有任何问题出现。
现在我注册用户,使用 iOS SDK 中的注册功能将他们的帐户从匿名状态转换为正常(非匿名)状态。这发生在填写多个字段并点击 'sign up' 按钮后。
let user = PFUser.currentUser()!
user.username = self.emailTextField.text
user.password = self.passwordTextField.text
user.email = self.emailTextField.text
user.signUpInBackgroundWithBlock({ (succeed, error) -> Void in
if (error == nil) {
self.dismissViewControllerAnimated(true, completion: nil)
} else {
print(error!.description)
}
})
此时服务器上似乎没有会话令牌。这是一个问题。
所以现在我点击一个按钮退出。
PFUser.logOutInBackgroundWithBlock({(error) -> Void in
if (error == nil) {
logOutBarButton.enabled = true
self.dismissViewControllerAnimated(true, completion: nil)
} else {
logOutBarButton.enabled = true
let errorVC = UIAlertController(title: "Oops..", message: "You Cannot Log Out at the Moment.", preferredStyle: .Alert)
errorVC.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in }))
self.presentViewController(errorVC, animated: true, completion: nil)
}
})
并在控制台中得到错误(如预期):无效会话令牌(代码:209,版本:1.13.0)
预期结果
我应该没有看到错误,在服务器上注册后应该有一个有效的会话令牌。
实际结果
无效的会话令牌(代码:209,版本:1.13.0)
环境设置
服务器
解析服务器版本:2.2.15
托管于:Google App Engine
数据库
MongoDB版本:3.0.12
托管于:mLab
补充说明
请注意,每次执行此测试时,我都会确保数据库为空。这也意味着我不会从原始解析中迁移任何内容。
第二次注销成功,但我认为这是因为它只是在本地将 currentUser 设置为 nil。
整件事可能是对匿名用户工作方式的误解(进一步澄清会有所帮助)。我几乎可以肯定这可能适用于原始解析,因为我在 github 上的存储库中看到过类似的实现。示例:(https://github.com/appflock/open/blob/master/ios/Reveal/AppDelegate.m)
如何在解析服务器上使用匿名用户时阻止此错误的发生?
希望在即将推出的 2.2.17 中解决此问题
问题描述
我正在使用最新版本的解析服务器和最新的 iOS SDK 创建涉及匿名用户的简单注册流程。发生的事情是用户在尝试注销时收到以下错误:
invalid session token (Code: 209, Version: 1.13.0)
重现步骤
我的应用程序启动并在我的 AppDelegate.swift 文件中执行以下代码。
let parseConfig = ParseClientConfiguration {
[=10=].applicationId = "insertAppIdHere"
[=10=].clientKey = "insertClientKeyHere"
[=10=].server = "https://MyParseServer.com/parse"
}
Parse.initializeWithConfiguration(parseConfig)
PFUser.enableAutomaticUser()
PFUser.currentUser()!.saveInBackground()
没有任何问题出现。
现在我注册用户,使用 iOS SDK 中的注册功能将他们的帐户从匿名状态转换为正常(非匿名)状态。这发生在填写多个字段并点击 'sign up' 按钮后。
let user = PFUser.currentUser()!
user.username = self.emailTextField.text
user.password = self.passwordTextField.text
user.email = self.emailTextField.text
user.signUpInBackgroundWithBlock({ (succeed, error) -> Void in
if (error == nil) {
self.dismissViewControllerAnimated(true, completion: nil)
} else {
print(error!.description)
}
})
此时服务器上似乎没有会话令牌。这是一个问题。
所以现在我点击一个按钮退出。
PFUser.logOutInBackgroundWithBlock({(error) -> Void in
if (error == nil) {
logOutBarButton.enabled = true
self.dismissViewControllerAnimated(true, completion: nil)
} else {
logOutBarButton.enabled = true
let errorVC = UIAlertController(title: "Oops..", message: "You Cannot Log Out at the Moment.", preferredStyle: .Alert)
errorVC.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in }))
self.presentViewController(errorVC, animated: true, completion: nil)
}
})
并在控制台中得到错误(如预期):无效会话令牌(代码:209,版本:1.13.0)
预期结果
我应该没有看到错误,在服务器上注册后应该有一个有效的会话令牌。
实际结果
无效的会话令牌(代码:209,版本:1.13.0) 环境设置
服务器 解析服务器版本:2.2.15 托管于:Google App Engine
数据库 MongoDB版本:3.0.12 托管于:mLab
补充说明
请注意,每次执行此测试时,我都会确保数据库为空。这也意味着我不会从原始解析中迁移任何内容。
第二次注销成功,但我认为这是因为它只是在本地将 currentUser 设置为 nil。
整件事可能是对匿名用户工作方式的误解(进一步澄清会有所帮助)。我几乎可以肯定这可能适用于原始解析,因为我在 github 上的存储库中看到过类似的实现。示例:(https://github.com/appflock/open/blob/master/ios/Reveal/AppDelegate.m)
如何在解析服务器上使用匿名用户时阻止此错误的发生?
希望在即将推出的 2.2.17 中解决此问题