Ios 确定用户是否跳过FBSession中的登录(openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:)

Ios 确定用户是否跳过FBSession中的登录(openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:),ios,objective-c,facebook,Ios,Objective C,Facebook,我想清除令牌信息等,如果用户在登录facebook时点击跳过。登录本身是: [FBSession openActiveSessionWithReadPermissions:@[@"email", @"user_events", @"friends_events"] allowLoginUI:YES completionHandler: ^(FBSession *s

我想清除令牌信息等,如果用户在登录facebook时点击跳过。登录本身是:

[FBSession openActiveSessionWithReadPermissions:@[@"email", @"user_events", @"friends_events"] 
                                   allowLoginUI:YES 
                              completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) {
     if (!error)
          // do something depending on state
     }
 }];
问题是我无法确定用户是否“跳过”了登录。在权限上使用publish_stream的方法在这里没有意义,因为我不需要publish_stream请求

控制台输出如下:

session: <FBSession: ___, state: FBSessionStateOpen, loginHandler: ___, appID: ___, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: ___>, expirationDate: _IN_THE_FUTURE_, refreshDate: _CURRENT_TIME_, attemptedRefreshDate: ___, permissions:(
    email,
    "user_events",
    "friends_events"
)>
error: <nil>
(FBSessionState) state = FBSessionStateOpen

所以,即使我按了“跳过”,一切看起来都很好。有没有办法确定是否按了skip?

如果用户点击了skip,那么就没有令牌信息可以开始,那么为什么需要清除它?@MingLi Well truth。但是,我仍然需要确定他是否登录,因为稍后我必须在注销前显示警报等。如果用户跳过登录,则活动会话将不会处于打开状态,因此您应该能够检查[[FBSession activeSession]isOpen],只有在为真时才注销。@MingLi这不是真的-如您所见,我从FB收到的状态是打开的-所有信息都已传递,会话已打开。用户以前是否以某种方式授权了你的应用程序?如果他们以前从未授权过你的应用程序,并且他们按了skip,那么你不应该拥有访问令牌,会话也不应该处于打开状态。另外,这是用于iOS集成登录、SSO登录还是webview登录?