fbDidLogin不被调用

所以,我已经搞乱了Facebook的iOS SDK,最新的版本,我不能得到fbDidLogin方法被调用。 login过程工作正常,在模拟器上使用Safari并在设备上运行Facebook应用程序。 但是,login后,我被转回到我的应用程序(因为我应该是),但由于fbDidLogin方法没有被调用,没有任何改变。 至于我的应用程序而言,我没有login。与SDK捆绑在一起的演示应用程序工作正常。 所以我显然做错了,但我不知道如何检查什么。 我三重检查了演示程序中使用的所有方法与我自己的方法,只要我可以看到一切看起来相同。 任何想法或想法如何debugging呢? 还是有人有类似的问题?

谢谢!

我刚才遇到同样的问题。 我通过将下面的代码添加到我的应用程序委托来解决它:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[controller facebook] handleOpenURL:url]; } 

控制器是我的UIViewController实例,Facebook是我的Facebook实例。

您还需要注册您的应用程序来处理您的fb应用程序的URLscheme(在Info.plist中这样做)。

一个常见的错误可能是不在主应用程序委托中实现以下callback方法,但在其他地方。 在派生自UIApplicationDelegate的类中实现此方法。 这是iOS在上下文切换之后调用的入口点,可以将应用程序重新置于前台。

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // obtain facebook instance ref [ facebook handleOpenURL: url ]; } 

如果您已经正确创build了FB应用程序ID并按照https://developers.facebook.com/docs/guides/mobile/#ios中的定义正确地映射了URL,那么它应该可以工作。

我解决了这个问题,如果Facebook是你的第一个viewcontroller的对象,你的appdelegate正在加载,那么你可以使用appdelegate的viewcontroller属性来引用Facebook对象

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { [ viewController.facebook handleOpenURL: url ]; } 

我的原因是,我没有使用正确的委托在ApDelegate Facebook的初始化。 我把它指向自己,当它应该使用视图控制器用户实际执行login。

从AppDelegate:

 facebook = [[Facebook alloc] initWithAppId:@"111111111111111" andDelegate:homeViewController]; 
 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [ facebook handleOpenURL:url]; } 

应该写在AppDelegate.m,以便它可以访问整个应用程序。

请喜欢它,如果它的工作

像Jiri在第一个评论中说的,你应该在你的应用程序委托中实现这些方法

 -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[loginScreen facebook] handleOpenURL:url]; } 

loginScreen是你想要用来logging或使用Facebook的其他任何东西的视图控制器,这个地方是应用程序委托以外的地方。

删除这些方法如果你正在使用它

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { } 

我最近也遇到了这个。 我的问题是,Facebook上的应用程序设置configuration的方式,使应用程序不被授权。 因此,我的fbDidNotLogin方法被调用。 解决的办法是去

  • Facebook Developers – > Apps – > My App – > Edit Settings – > Basic
  • 请确保在“select您的应用程序与Facebook的集成方式”部分下,“本机iOS应用程序”类别未启用(绿色复选标记)。