Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invalid Session Token (Code: 209 Version: 1.7.4)

Every time I go to run my app the app runs fine but the console prints an error. The error is "Invalid Session Token (Code: 209 Version: 1.7.4)"

I checked Parse.com and they told me to handle this error, writing a global utility function that is called by all of my parse request error callbacks. They said i can handle the "invalid session token" error in this global function and I should prompt the user to login again so that they can obtain a new session token. However when I try to input the code in my app I get the error that I am using unresolved identifiers.

Does anyone know how to fix an Invalid Session Token error. Or how I can use the code "kPFErrorInvalidSessionToken" in my app. Any help would be greatly appreciated. (the language I am writing in is swift)

like image 548
Ronald Jones Avatar asked Apr 27 '26 13:04

Ronald Jones


1 Answers

I have tried to call ParseErrorHandler.handleParseError(err) not just only from AppDelegate, but also from other view controllers and it was not worked properly. Here is solution which 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)
}
}

Hopefully I will save somebody's time!

like image 79
Victor B Avatar answered Apr 30 '26 05:04

Victor B



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!