【问题标题】:Facebook SDK: openActiveSessionWithPermissions completionHandler not calledFacebook SDK:未调用 openActiveSessionWithPermissions completionHandler
【发布时间】:2012-09-20 14:23:37
【问题描述】:

使用我已经实现的 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。

【问题讨论】:

    标签: iphone ios facebook facebook-ios-sdk


    【解决方案1】:

    我假设您关注 Facebook SDK 的 Implement the Login Flow,但值得再次阅读该部分,因为它解释了所有内容。确保您在委托中处理了 openURL 和 handleOpenURL 方法。还要检查openSessionWithAllowLoginUI almost always returns NO

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        来自official doc

        处理程序

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          • 1970-01-01
          • 2016-01-02
          相关资源
          最近更新 更多