会话令牌无效(代码:209版本:1.7.4)

时间:2015-05-29 23:06:26

标签: swift parse-platform

每次我去运行我的应用程序时,应用程序运行正常,但控制台会输出错误。错误为"Invalid Session Token (Code: 209 Version: 1.7.4)"

我检查了Parse.com,他们告诉我处理这个错误,编写一个由我的所有解析请求错误回调调用的全局实用函数。他们说我可以处理"无效的会话令牌"此全局函数中的错误,我应该提示用户再次登录,以便他们可以获取新的会话令牌。但是当我尝试在我的应用程序中输入代码时,我得到的错误是我正在使用未解析的标识符。

有谁知道如何修复无效会话令牌错误。或者我如何使用代码" kPFErrorInvalidSessionToken"在我的应用程序中任何帮助将不胜感激。 (我写的语言很快)

3 个答案:

答案 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)
        }
    })

请注意,用户在技术上仍然登录,因此注销的原因是