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

Posted

技术标签:

【中文标题】如果安装了 Facebook 应用程序,PFFacebookUtils 登录方法不会执行任何操作【英文标题】:PFFacebookUtils login methods do nothing if Facebook app is installed 【发布时间】:2016-03-25 16:58:42 【问题描述】:

这很奇怪。我正在尝试登录 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】:

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

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

- (void)start

    [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
                      forMode:NSDefaultRunLoopMode];
    [_connection start];

现在可以了

【讨论】:

以上是关于如果安装了 Facebook 应用程序,PFFacebookUtils 登录方法不会执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章

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

在android中使用facebook登录[重复]

当 Facebook 应用程序安装在设备/模拟器上时,发布到用户 facebook 墙不起作用

Xcode快速链接到Facebook页面[关闭]

Facebook 应用安装广告 - sdk 中的数据

Facebook无法在Flutter中使用安装Facebook应用程序登录