I'm trying to implement Facebook login with my Swift app. I was able to login to the app just fine. However, I ran into an issue once I logged the user out. I get the error the supplied Facebook session token is expired or invalid
. How can I generate a new token? Here's the code:
if let accessToken: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken() {
PFFacebookUtils.logInInBackgroundWithAccessToken(accessToken, block: {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
print("User logged in through Facebook!")
self.navigateToInGame(true)
} else {
print("Uh oh. There was an error logging in.")
let manager = FBSDKLoginManager()
manager.logOut()
manager.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { (result, error) -> Void in
if let error = error {
print(error.localizedDescription)
}
if result.isCancelled {
print("Cancelled")
} else {
print("Logged in")
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
self.performSegueWithIdentifier("signUp", sender: self)
} else {
print("User logged in through Facebook!")
self.navigateToInGame(true)
}
} else {
print("Uh oh. The user cancelled the Facebook login.")
}
}
})
if accessToken.expirationDate.compare(NSDate()) == NSComparisonResult.OrderedAscending {
FBSDKLoginManager.renewSystemCredentials({ (result, error) -> Void in
if result != .Renewed {
// Do further procedures once renewed is failed or rejected
print("Token didn't renew")
}
})
}
}
})
} else {
let permissions = ["public_profile", "email"]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block: {
(user: PFUser?, error: NSError?) -> Void in
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
self.performSegueWithIdentifier("signUp", sender: self)
} else {
print("User logged in through Facebook!")
self.navigateToInGame(true)
}
} else {
print("Uh oh. The user cancelled the Facebook login.")
}
})
}
}
UPDATED CODE.
I get the following in log:
"uh oh, error logging in". Still allows me to login via FB. I click "Continue" in Facebook.
Log reads "logged in"
Log reads "Uh oh, user cancelled the Facebook login and it kicks me back to the login screen. The user, however, is still created in Parse. I would like to go to my signUp segue after signing in for the first time.