1

我只是在检查 FBSession 的状态

- (BOOL)hasValidSession {
    return (self.session.state == FBSessionStateOpen)
 }

有时状态会短暂更改为 FBSessionStateOpenTokenExtended,这将返回 NO,这会降低我的登录模式。当我再次单击连接时,它会使应用程序崩溃以尝试重新建立活动的 facebook 会话。所以我把它改成了

- (BOOL)hasValidSession {
if (self.session.state == FBSessionStateOpen || self.session.state == FBSessionStateOpenTokenExtended) {
    return YES;
}
else {
    return NO;
}}

到目前为止,我的上述方法有效,但它似乎是一个 hack……在您的应用程序中检查有效会话的最佳普遍方法是什么?

4

2 回答 2

3

这是我在我的应用程序中检查 facebook 会话的方式,它适用于我:

-(BOOL)checkFacebookSession
{
    if([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded)
    {
        NSLog(@"Logged in to Facebook");
        [self openFacebookSession];
        UIAlertView *alertDialog;

        alertDialog = [[UIAlertView alloc] initWithTitle:@"Facebook" message:@"You're already logged in to Facebook" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

        [alertDialog show];

        [alertDialog release];
        return YES;
    }
    else{
        NSLog(@"Not logged in to Facebook");
        return NO; //Show login flow.
    }
}

希望能帮助到你!:D

于 2012-10-11T23:41:07.210 回答
0

如果状态为 inFBSessionStateOpen或 in ,则会话处于活动状态FBSessionStateOpenTokenExtended。您可以使用下面的方法来获取用户当前的登录状态:

- (BOOL)isActiveSession
{
    return (FBSession.activeSession.state == FBSessionStateOpen 
           || FBSession.activeSession.state == FBSessionStateOpenTokenExtended);
}
于 2015-02-11T06:35:20.750 回答