了解FBSession以及为什么它们不能像IOS那样按预期的FB sdk工作

时间:2013-11-23 10:37:51

标签: ios objective-c facebook-sdk-3.0

我正在使用FB sdk for iOS(3.9)。

所以,按照Facebook开发者的教程,我在AppDelegate中进行了以下检查。

if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
        // To-do, show logged in view
        NSLog(@"There is token for session");
    } else {
        // No, display the login page.
        NSLog(@"There isn't token for session");

}

当我重新启动我的应用时,在第一次启动后请求权限后,我可以看到有一个令牌,正如预期的那样。

但是在我的下一个节目中,如果我称之为:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    if (FBSession.activeSession.isOpen) {
        NSLog(@"FBSession is open. Will populate user details.");
        [self populateUserDetails];
    } else {
        NSLog(@"Session is not open");
    }

然后我看到Session is not open

为了使其工作,我必须将我的委托功能更改为:

if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
            // To-do, show logged in view
            NSLog(@"There is token for session");
            [self openSession]
        } else {
            // No, display the login page.
            NSLog(@"There isn't token for session");

    }

那么,我是否必须每次都明确打开会话?我认为退出应用后会话不会过期。

您能否详细解释一下,因为我无法从Facebook开发者网站上获取它。

0 个答案:

没有答案