nicholjs
nicholjs

Reputation: 1762

facebook-ios-sdk logout

I am building a basic app for school that gets some info from facebook using the facebook-ios-sdk. However, when I log out of the app, it does not give me the option to log back in, even in the demo from facebook. I am checking to see if the sessions is still valid, and it always comes out invalid. That is another problem. Here is the code I have. Any help is appreciated.

- (void)viewDidLoad {
      _facebook = [[Facebook alloc] init];

      if ([_facebook isSessionValid] == NO) {
       //show proper buttons for login
        loginButton.hidden = NO;
        logoutButton.hidden = YES;
       }

     else {
     //show proper buttons for logout
        loginButton.hidden = YES;
        logoutButton.hidden = NO;
    }
  }

That is to check whether I am logged in or not. Then I have the proper buttons showing, but the code above is always returning that the session is invalid. Here are the functions I call to log in or out:

- (void)login {
     [_facebook authorize:kAppId permissions:_permissions delegate:self];
}

/**
* Invalidate the access token and clear the cookie.
*/
- (void)logout {
     [_facebook logout:self];
}

Upvotes: 2

Views: 4464

Answers (1)

Nate
Nate

Reputation: 31045

The facebook object says it has no valid session because its accessToken and/or expirationDate are nil. That's probably because it doesn't persist them itself. You probably need to record the accessToken and expirationDate by handling the login in an FBSessionDelegate's fbDidLogin method.

- (void)fbDidLogin {
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.accessToken forKey: @"access_token"];
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.expirationDate forKey: @"expiration_date"];
}

Use NSUserDefaults, for example, to persist those values to the device. Then, every time you alloc and init your _facebook object, immediately set the accessToken and expirationDate to the values you stored in NSUserDefaults.

That should fix the facebook object saying isSessionValid = NO always. As for the other problem, I have the same one :(

Upvotes: 6

Related Questions