FBSession,检查是否已登录?

时间:2013-12-20 03:03:32

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

我已经在我的应用程序中实现了facebook登录,但是现在我一直在玩登录/注销状态以及只有在用户注销时弹出的模态视图...无论如何这就是我所拥有的它不起作用?

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果我说得对,你的会话应该仍然是开放的。 用户注销时,您是否执行此行?

[FBSession.activeSession closeAndClearTokenInformation];

希望这个帮助

答案 1 :(得分: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;
}