如果安装了Facebook应用程序,PFFacebookUtils登录方法不执行任何操作

时间:2016-03-25 16:58:42

标签: ios objective-c facebook parse-platform pffacebookutils

这很奇怪。我试图登录Facebook,如果设备上没有安装Facebook应用程序,一切正常。但如果有这个应用程序,那么没有任何反应。根本不值一提。永远不会调用完成块,也不会出现登录对话框。这是我非常简单的代码:

[PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile"] block:^(PFUser *user, NSError *error)
 {
     NSLog(@"Completion");

 }];

我在applicationDidFinishLauncing

中也有这段代码
[Parse setApplicationId:kPAParseApplicationId clientKey:kPAParseClientKey];    
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];

我实施了以下方法:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                   openURL:url
                                         sourceApplication:sourceApplication
                                                annotation:annotation];

}

我还需要注意以下几点:有时甚至很少,即使安装了应用程序也能正常工作。工作然后再没有任何理由再次停止工作。有人遇到过这样的问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。问题出在Facebook SDK本身,我已经设法修复它。它与正在安装的Facebook应用程序无关。

幸运的是,FBSDKLoginKitFBSDKCoreKit是开源的,因此我能够找到问题所在。因此,FBSDKLoginManager仅在具有从Facebook服务器加载的活动SDK配置时才允许登录。如果没有,那么它甚至不会记录一些错误消息来帮助开发人员。那么它有时没有主动配置的原因是什么呢。原因是FBSDKURLConnection没有在主运行循环上安排其NSURLConnection。因此,如果在后台线程上调用其start方法,则可以调用NSURLConnection委托方法,或者可以不调用它们。如果它们不存在则没有新的配置加载,您无法登录。所以我所做的只是简单地修改FBSDKURLConnection的{​​{1}}方法:

start

现在可行了