如果Facebook应用程序已安装,PFFVideosUtilslogin方法将不会执行任何操作

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

[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]; } 

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

我已经知道了。 问题出在Facebook SDK本身,我设法修复它。 这与Facebook应用程序是否安装无关。

幸运的是, FBSDKLoginKitFBSDKCoreKit是开源的,所以我能够追踪到这个问题。 所以, FBSDKLoginManager只有在从Facebook服务器上加载了一个活动的SDKconfiguration的情况下才允许login。 如果没有,那么即使logging一些错误信息来帮助开发者,它也不会做任何事情。 那么有时候没有主动configuration的原因是什么? 原因是FBSDKURLConnection没有在主运行循环上调度它的NSURLConnection 。 因此,如果在后台线程上调用start方法,那么可能会调用NSURLConnection委托方法,或者可能不会调用它们。 如果他们不是那么没有新的configuration加载,你无法login。 所以我所做的就是修改FBSDKURLConnectionstart方法,如下所示:

 - (void)start { [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [_connection start]; } 

现在它工作