FBRequest requestForMe startWithCompletionHandler方法不在设备上工作

时间:2012-09-26 23:14:20

标签: iphone ios facebook ios6 simulator

我已经按照Facebook开发者网站上关于将Facebook SDK 3.1整合到iOS 6中的所有指示。我的代码在iPhone 6.0模拟器上完美运行(用户可以登录Facebook),但是当我在iPhone上运行应用程序时,函数[FBRequest requestForMe] startWithCompletionHandler]不生成响应。根据Facebook开发者网站的说法,它应该是成功的还是返回错误,但它既不会也不会。该应用程序只是坐在那里等待从未来的响应。我的代码如下:

- (void)populateUserDetails {
    if (FBSession.activeSession.isOpen) {
        [[FBRequest requestForMe] startWithCompletionHandler:
         ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
             if (!error) {
                NSLog(@"logged in");
             } else {
                 NSLog(@"error: %@", error);
             }
         }];
    } else {
       NSLog(@"no active session");
    }
}

使用断点,我确定activeSession始终是打开的,因此实际调用了startWithCompletionHandler:方法。也许这是一个构建问题,因为它在模拟器上运行良好?有什么想法吗?

2 个答案:

答案 0 :(得分:5)

  

确保您的App Store未自动插入“0”值   ID

App Store ID与Bundle ID不同。就像在Facebook上说的那样:“出于安全考虑,我们会在授权您的应用之前检查捆绑ID”。因此,您应该将其设置为与Xcode中的完全相同。

但App Store ID(“我们可以链接到Facebook上的iPhone App Store ID”),您在已经提交了应用程序并且已被接受时设置它们。因此,出于开发目的,你应该将iPhone和iPad(如果有的话)设置为0,这样我就可以在Simulator和iPhone iOS 6.0上正常工作。

这不是因为那个0,也许你修了别的东西?

答案 1 :(得分:2)

回答了我自己的问题:转到您的Facebook应用页面,确保没有为您的App Store ID自动插入“0”值。我已经将我的捆绑ID设置为正确的值(您也必须这样做),但是在一夜之间,Facebook会自动将App Store ID值设置为0.一旦删除了该值,一切正常。