2013-12-20 60 views
0

我已经实现了Facebook登录到我的应用程序,但是现在我一直玩的登录/注销状态和什么模态视图才弹出只有当用户注销...反正这是我有和它不工作?FBSession,检查是否登录?

if (FBSessionStateClosed) { 
    [self performSegueWithIdentifier:@"TestModal" sender:nil]; 
} 

感谢您的帮助!

+0

在你想到哪里去注销用户的时候,你可以登录的'[FBSession输出activeSession]状态]'看看它在什么状态? –

回答

0

如果我得到你正确的,你的会议应该仍然是开放的。 双重检查您是否在用户注销时执行此行?

[FBSession.activeSession closeAndClearTokenInformation]; 

希望这有助于

0

使用以下方法可以帮助你:

-(void)openFacebookAuthentication 
{ 
    NSArray *permission = [NSArray arrayWithObjects:kFBEmailPermission,kFBUserPhotosPermission, nil]; 

    FBSession *session = [[FBSession alloc] initWithPermissions:permission]; 

    [FBSession setActiveSession: [[FBSession alloc] initWithPermissions:permission] ]; 

    [[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 

     switch (status) { 
      case FBSessionStateOpen: 
       [self getMyData]; 
       break; 
      case FBSessionStateClosedLoginFailed: { 
       // prefer to keep decls near to their use 
       // unpack the error code and reason in order to compute cancel bool 
       NSString *errorCode = [[error userInfo] objectForKey:FBErrorLoginFailedOriginalErrorCode]; 
       NSString *errorReason = [[error userInfo] objectForKey:FBErrorLoginFailedReason]; 
       BOOL userDidCancel = !errorCode && (!errorReason || [errorReason isEqualToString:FBErrorLoginFailedReasonInlineCancelledValue]); 


       if(error.code == 2 && ![errorReason isEqualToString:kFBSdkUserLoginFail]) { 
        UIAlertView *errorMessage = [[UIAlertView alloc] initWithTitle:kFBAlertTitle 
                      message:kFBAuthenticationErrorMessage 
                      delegate:nil 
                      cancelButtonTitle:kOk 
                      otherButtonTitles:nil]; 
        [errorMessage performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES]; 
        errorMessage = nil; 
        } 
       } 
       break; 
       // presently extension, log-out and invalidation are being implemented in the Facebook class 
      default: 
       break; // so we do nothing in response to those state transitions 
     } 
    }]; 
    permission = nil; 
}