Facebook SDK:openActiveSessionWithPermissions completionHandler未被调用

使用来自Facebook的代码,我已经实现

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_actions", nil]; return [FBSession openActiveSessionWithPermissions:permissions allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { NSLog(@"error %@", error); [self sessionStateChanged:session state:state error:error]; }]; } 

它返回NO我明白,因为它是第一次login,并且loginUI工作(它发送用户到FB并要求他们给予权限),然后返回,但completionHandler块永远不会运行。 它只是返回到应用程序和nada。

我假设你执行 Facebook SDK 的loginstream程 ,但值得再读一遍,因为它解释了一切。 确保你在委托中处理了openURL和handleOpenURL方法。 另外检查openSessionWithAllowLoginUI几乎总是返回NO

迟到了,但为防万一有人来检查…

从openActiveSession切换到实例方法openWithCompletionHandler为我做了窍门。

从官方文件

处理器

…如果提供了一个块,每当会话改变状态时,FBSession对象将调用该块。

我解决了这个问题,我解决Open Graph的设置,并通过研究FB的可用示例代码,如这些函数[FBSession.activeSession handleOpenURL:url]和[FBSession.activeSession handleDidBecomeActive];