每次我去运行我的应用程序时,应用程序运行正常,但控制台会输出错误。错误为"Invalid Session Token (Code: 209 Version: 1.7.4)"
我检查了Parse.com,他们告诉我处理这个错误,编写一个由我的所有解析请求错误回调调用的全局实用函数。他们说我可以处理"无效的会话令牌"此全局函数中的错误,我应该提示用户再次登录,以便他们可以获取新的会话令牌。但是当我尝试在我的应用程序中输入代码时,我得到的错误是我正在使用未解析的标识符。
有谁知道如何修复无效会话令牌错误。或者我如何使用代码" kPFErrorInvalidSessionToken"在我的应用程序中任何帮助将不胜感激。 (我写的语言很快)
答案 0 :(得分:2)
我试图仅从AppDelegate
调用class ParseErrorHandler {
class func handleParseError(error: NSError) {
if error.domain != PFParseErrorDomain {
return
}
switch (error.code) {
// error code 209 handling
case PFErrorCode.ErrorInvalidSessionToken.rawValue:
invalidSessionTokenHandler()
default:
break
}
}
// NOTE: User has no other option but to log out in this implementation
private class func invalidSessionTokenHandler() {
let message: String = "Session is no longer valid! Please login again!"
let alert = UIAlertController(title: nil, message: message, preferredStyle: .Alert)
var vc = UIApplication.sharedApplication().keyWindow?.rootViewController
while (vc!.presentedViewController != nil)
{
vc = vc!.presentedViewController
}
vc?.presentViewController(alert, animated: true, completion: nil)
let logoutAction = UIAlertAction(title: "OK", style: .Default, handler: {
(UIAlertAction) -> Void in
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let exampleViewController: SignUpViewController = mainStoryboard.instantiateViewControllerWithIdentifier("SignUpViewController") as! SignUpViewController
vc?.presentViewController(exampleViewController, animated: true, completion: nil)
PFUser.logOut()
})
alert.addAction(logoutAction)
}
}
,而且还尝试从其他视图控制器调用{{1}},但它无法正常工作。这是每个VC都有效的解决方案:
{{1}}
希望我能节省一些时间!
答案 1 :(得分:0)
如果通过说“未解析的标识符”表示“kPFErrorInvalidSessionToken”,则应使用PFErrorCode.ErrorInvalidSessionToken.rawValue。 请告诉我你是否成功捕获错误,因为我得到的所有内容都是nil NSErrorPointer。
答案 2 :(得分:0)
这是我的解决方案,主要基于Parse.com iOS开发人员指南中的代码。
class ParseErrorHandler {
class func handleParseError(error: NSError) {
if error.domain != PFParseErrorDomain {
return
}
switch (error.code) {
// error code 209 handling
case PFErrorCode.ErrorInvalidSessionToken.rawValue:
invalidSessionTokenHandler()
default:
break
}
}
// NOTE: User has no other option but to log out in this implementation
private class func invalidSessionTokenHandler() {
let message: String = "Session is no longer valid, you are no longer logged in"
let alert = UIAlertController(title: nil, message: message, preferredStyle: .Alert)
let presentingViewController = UIApplication.sharedApplication().keyWindow?.rootViewController
presentingViewController?.presentViewController(alert, animated: true, completion: nil)
let logoutAction = UIAlertAction(title: "OK", style: .Default, handler: {
(UIAlertAction) -> Void in
let loginViewController:UIViewController = UIStoryboard(name: "Main", bundle:
nil).instantiateViewControllerWithIdentifier("Login_2.0")
presentingViewController?.presentViewController(loginViewController, animated: true, completion: nil)
PFUser.logOut()
})
alert.addAction(logoutAction)
}
}
上面是errorHandler类,它应该用于根据Parse文档捕获所有错误(在这种情况下,我只显示错误209)
以下是我在AppDelegate.swift中在应用程序函数中捕获此错误的方法:
PFAnalytics.trackAppOpenedWithLaunchOptionsInBackground(launchOptions, block: {
(suceeded: Bool?, error: NSError?) -> Void in
if let err = error {
ParseErrorHandler.handleParseError(err)
}
})
请注意,用户在技术上仍然登录,因此注销的原因是