【问题标题】:facebook-ios-sdk logoutfacebook-ios-sdk 注销
【发布时间】:2011-05-19 06:27:18
【问题描述】:

我正在为学校构建一个基本应用程序,它使用 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;
    }
  }

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

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

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

【问题讨论】:

  • 请整理一下你的帖子,这样不太可读。
  • 对不起,我没有意识到它是如此糟糕。

标签: iphone facebook ios


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多