我正在更新到最新的SDK Facebook(3.10),而我在登录时遇到了问题。
当我通过allowLoginUI = YES时,它将很好地登录并调用回调块。但是,当我通过allowLoginUI = NO时,回调函数就不会被调用...我不知道为什么。
我想在用户已有 session 时传递allowLoginUI = NO。
这是代码。
- (void)openFBSession:(NSNumber*)active{
BOOL boolValue = [active boolValue];
NSArray *permissions = [[NSArray alloc] initWithObjects:@"basic_info, email", nil];
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:boolValue
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
if (error) {
// Handle errors
[self handleAuthError:error];
} else {
// No error
[self sessionStateChanged:session state:state error:error];
}
}];
}
在这里,当我调用函数时。 (enableScreen是显示facebookLogin按钮的功能)
if (FBSession.activeSession.state == FBSessionStateCreated) {
// Yes, so just open the session (this won't display any UX).
[self.window.rootViewController performSelector:@selector(enableScreen)];
} else {
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded){
[self openFBSession:[NSNumber numberWithBool:NO]];
}else{
[self.window.rootViewController performSelector:@selector(enableScreen)];
}
}
谢谢!
最佳答案
您需要检查openActiveSessionWithReadPermissions方法的返回值。
如果在没有向用户展示UI的情况下同步打开了 session ,它将返回YES。
当传递allowLoginUI:NO时,由于此方法是同步执行的,因此不会调用回调。