Ios 确定用户是否跳过FBSession中的登录(openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:)
我想清除令牌信息等,如果用户在登录facebook时点击跳过。登录本身是: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
[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登录?