Invalid session token (code: 209 Version: 1.7.4)

Every time I run my application, the application works fine, but the console prints an error. Mistake"Invalid Session Token (Code: 209 Version: 1.7.4)"

I checked Parse.com and they told me to handle this error by writing a global utility function that is called by all of my parse request request callbacks. They said that I can handle the "invalid session token" error in this global function and I have to ask the user to log in again to get a new session token. However, when I try to inject code into my application, I get an error that I am using unresolved identifiers.

Does anyone know how to fix the Invalid Session token error. Or how can I use the "kPFErrorInvalidSessionToken" code in my application. Any help would be greatly appreciated. (the language I write is fast)

+3


source to share


3 answers


I tried to call ParseErrorHandler.handleParseError(err)

not only from AppDelegate

but also from other view controllers and it didn't work as expected. Here is a solution that works from every VC:

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

      



Hope I save some time!

+2


source


If you mean "kPFErrorInvalidSessionToken" when you say "unresolved identifiers", then you should use PFErrorCode.ErrorInvalidSessionToken.rawValue instead. please tell me if you succeeded in catching the error because all i get back is nilrrorPointer.



0


source


Here is my solution, mostly based on the code in the Parse.com iOS Developers Guide.

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

      

Above is the errorHandler class which should be used to catch all errors as per the Parse documentation (in this case I am only showing error 209)

This is how I will catch this error in AppDelegate.swift in an application function:

PFAnalytics.trackAppOpenedWithLaunchOptionsInBackground(launchOptions, block: {
        (suceeded: Bool?, error: NSError?) -> Void in
        if let err = error {
            ParseErrorHandler.handleParseError(err)
        }
    })

      

Note that the user is technically still logging in, so the exits call

0


source







All Articles