How to logout user using Facebook authentication using Swift and iOS?

Joe picture Joe · Apr 2, 2016 · Viewed 16.3k times · Source

I've tried searching around but I can't find the answer to my question.

I'm playing around with this application from github: https://github.com/Yalantis/Koloda/tree/master/Example

I'm using it because I'm doing a project which will use the tile based swiping from this application.

I'm also using firebase. So far, I can add users to my database, so the app and firebase are connected.

I also want users to register/login using facebook.

I have connected my app to facebook and a user can come in and successfully login using facebook authentication.

The problem I am having is logging out.

When I click on the logout button, I want the user to be completely logged out. So there is a logout method that comes with the facebook SDK called logout. Here are the relevant parts of my code.

import FBSDKLoginKit
@IBAction func handleLogout(sender: AnyObject) {

    facebookLogin.logOut()
    print("loggedout")
    }

So when I click on logout and then click on login again I get this page:

http://imgur.com/owi3zZn

I do not want the user to stay authorized after they have clicked on the logout button. How do I make it so that when I click on the logout button, the user is completely logged out from Facebook and then when they click on the login button they have to re-enter their username/password?

I've tried looking around the webz but can't find a solution to my problem, although I'm sure it's something pretty simple, I hope!

Thank you for your help and sorry if the formatting is poor.

Answer

HardikDG picture HardikDG · Apr 2, 2016

If you to make the user log out from the app itself programmatically, you can check the following code.

let loginView : LoginManager = LoginManager()
loginView.loginBehavior = FBSDKLoginBehavior.Web

This will open the Facebook login popup in your app in which users can login into your app.

And for the logout, you can call:

  let manager = LoginManager()
  manager.logOut()

This will log out the user from the facebook in the app, after this if you call login method of SDK you will see the login popup again

If you want to clear the profile and token, also call the below code with logout.

 FBSDKAccessToken.setCurrentAccessToken(nil)
 FBSDKProfile.setCurrentProfile(nil)