首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >facebook-ios-sdk注销

facebook-ios-sdk注销
EN

Stack Overflow用户
提问于 2010-12-03 01:02:15
回答 1查看 4.5K关注 0票数 2

我正在为学校建立一个基本的应用程序,使用facebook-ios-sdk从facebook获得一些信息。然而,当我注销应用程序时,它不会给我提供重新登录的选项,即使是在facebook的演示中也是如此。我正在检查会话是否仍然有效,结果总是无效。这是另一个问题。这是我的代码。任何帮助都是非常感谢的。

代码语言:javascript
复制
- (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;
    }
  }

那就是检查我有没有登录。然后我显示了正确的按钮,但上面的代码总是返回会话无效。下面是我用来登录或注销的函数:

代码语言:javascript
复制
- (void)login {
     [_facebook authorize:kAppId permissions:_permissions delegate:self];
}

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

回答 1

Stack Overflow用户

发布于 2011-01-03 20:44:01

facebook对象说它没有有效的会话,因为它的accessToken和/或expirationDate为空。这可能是因为它本身并没有持久化它们。您可能需要通过在FBSessionDelegate的fbDidLogin方法中处理登录来记录accessToken和expirationDate。

代码语言:javascript
复制
- (void)fbDidLogin {
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.accessToken forKey: @"access_token"];
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.expirationDate forKey: @"expiration_date"];
}

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

这应该可以解决facebook对象总是说isSessionValid = NO的问题。至于另一个问题,我也有同样的问题:

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4337653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档