【问题标题】:Check for a valid Facebook Session检查有效的 Facebook 会话
【发布时间】:2012-10-02 17:50:34
【问题描述】:

我只是在检查 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……在您的应用程序中检查有效会话的最佳普遍方法是什么?

【问题讨论】:

    标签: iphone ios facebook ios5 facebook-ios-sdk


    【解决方案1】:

    这是我在我的应用中检查 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

    【讨论】:

    • 在这里执行什么操作 [self openFacebookSession];
    【解决方案2】:

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

    - (BOOL)isActiveSession
    {
        return (FBSession.activeSession.state == FBSessionStateOpen 
               || FBSession.activeSession.state == FBSessionStateOpenTokenExtended);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多