facebook-ios-sdk注销

nic*_*ljs 2 iphone facebook ios

我正在为学校建立一个基本应用程序,使用facebook-ios-sdk从facebook获取一些信息.但是,当我退出应用程序时,即使在Facebook的演示中,它也没有让我选择重新登录.我正在检查会话是否仍然有效,并且它总是无效.那是另一个问题.这是我的代码.任何帮助表示赞赏.

- (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;
    }
  }
Run Code Online (Sandbox Code Playgroud)

那是检查我是否登录.然后我显示了正确的按钮,但上面的代码总是返回会话无效.以下是我调用登录或注销的功能:

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

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

Nat*_*ate 6

facebook对象表示它没有有效的会话,因为它的accessToken和/或expirationDate是nil.这可能是因为它本身并不存在.您可能需要通过在FBSessionDelegate的fbDidLogin方法中处理登录来记录accessToken和expirationDate.

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

例如,使用NSUserDefaults将这些值保存到设备.然后,每次分配并初始化_facebook对象时,立即将accessToken和expirationDate设置为存储在NSUserDefaults中的值.

这应该修复facebook对象说isSessionValid = NO总是.至于其他问题,我有同样的一个:(