objective-c - Facebook SDK : ActiveSession is still closed after I give permission

标签 objective-c ios facebook-graph-api

我正在将 facebook 登录集成到我的应用程序中。我只是希望用户能够登录并获得他的生日和位置。

我获得了最新的 Facebook SDK 并成功将其添加到我的应用程序中。我还在 Facebook 上创建了一个新应用程序,并将提供的 key 添加到我的应用程序中。

我创建了一个按钮“使用 facebook 登录”并完成了以下操作

当用户点击按钮时

// handler for button click
- (IBAction)facebookLoginTouched:(id)sender {
    [self openSessionWithAllowLoginUI:YES];
}

此方法将向用户显示 facebook 登录页面以获得他的许可

-(BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_location",
                            @"user_birthday",
                            nil];
    return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self HandleLogin];
                                     }];
}

然后如果登录和权限成功

- (void)HandleLogin {
    if (FBSession.activeSession.isOpen) {
        //THIS IS NEVER REACHED

        [FBRequestConnection
         startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                       id<FBGraphUser> user,
                                       NSError *error) {
             //DO SOMETHING WITH THE USER INFO
         }];
    }
}

我的问题:

当我点击按钮时,Facebook 页面正确进入,我输入我的用户名/密码。它正确地记录了我,并且我允许该应用程序访问我的信息。完成后,我成功返回应用程序。

但是,当代码到达 FBSession.activeSession.isOpen 时,它返回 false。

为什么我正确登录并授予权限后 session 仍然关闭?

非常感谢任何帮助。

谢谢

最佳答案

您可能缺少处理 Facebook 应用返回的代码。在您的应用委托(delegate)实现文件中添加以下内容:

- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    // attempt to extract a token from the url
   return [FBSession.activeSession handleOpenURL:url]; 
}

关于objective-c - Facebook SDK : ActiveSession is still closed after I give permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383826/

相关文章:

ios - 删除重新排序的 UITableViewCells 后应用程序崩溃

iOS 导航栏图标大小 iPhone 6

php - 在没有太多 PHP/MYSQL 知识的情况下如何创建 Facebook 应用程序?

facebook - 如何从 Facebook 的广告 API 获取像素/站外转化统计数据?

iphone - 屏幕锁定时如何关闭我的 iPhone 应用程序?

objective-c - 如何通过点击 map 来识别国家?

objective-c - UITextField 委托(delegate)

android - 可怕的 libPNG 在 iOS 上的表现

ios - 设置 UIAlertView 委托(delegate)

facebook - 如何检索 Facebook 用户的广告帐户 ID?