4

使用我已经实现的 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 ,我理解这是第一次登录,并且 loginUI 工作(它将用户发送到 FB 并要求他们授予权限)然后返回但 completionHandler 块永远不会运行。它只是返回到应用程序和 nada。

4

3 回答 3

4

有点晚了,但以防万一有人来检查......

从 openActiveSession 切换到实例方法 openWithCompletionHandler 对我有用。

于 2013-05-25T03:26:05.430 回答
4

我假设您遵循实现 Facebook SDK 的登录流程,但值得再次阅读该部分,因为它解释了所有内容。确保您在委托中处理了 openURL 和 handleOpenURL 方法。还要检查openSessionWithAllowLoginUI 几乎总是返回 NO

于 2012-09-20T15:20:03.630 回答
0

来自官方文档

处理程序

...如果提供了一个块,则 FBSession 对象将在每次会话更改状态时调用该块。

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

于 2012-12-22T02:03:02.400 回答