Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果安装了Facebook应用程序,PFFacebookUtils登录方法将不起任何作用_Ios_Objective C_Facebook_Parse Platform_Pffacebookutils - Fatal编程技术网

Ios 如果安装了Facebook应用程序,PFFacebookUtils登录方法将不起任何作用

Ios 如果安装了Facebook应用程序,PFFacebookUtils登录方法将不起任何作用,ios,objective-c,facebook,parse-platform,pffacebookutils,Ios,Objective C,Facebook,Parse Platform,Pffacebookutils,这很奇怪。我正在尝试登录Facebook,如果设备上没有安装Facebook应用程序,一切正常。但是如果有这个应用程序,那么什么都不会发生。没什么。不会调用完成块,也不会显示登录对话框。这是我非常简单的代码: [PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile"] block:^(PFUser *user, NSError *error) { NSLog(@"Completion");

这很奇怪。我正在尝试登录Facebook,如果设备上没有安装Facebook应用程序,一切正常。但是如果有这个应用程序,那么什么都不会发生。没什么。不会调用完成块,也不会显示登录对话框。这是我非常简单的代码:

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

 }];
我在
applicationdFinishLaunching
中也有此代码:

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

}

我还需要注意以下几点:有时,非常罕见,即使安装了应用程序,它也能正常工作。工作,然后又无缘无故地停止工作。有人遇到过这样的问题吗?谢谢

我已经弄明白了。问题出在Facebook SDK本身,我已经设法解决了它。这与是否安装了
Facebook
应用程序无关

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

- (void)start
{
    [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
                      forMode:NSDefaultRunLoopMode];
    [_connection start];
}
现在它起作用了