我已经按照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:方法。也许这是一个构建问题,因为它在模拟器上运行良好?有什么想法吗?
答案 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.一旦删除了该值,一切正常。