fbDidLogin未调用

时间:2010-11-22 10:48:34

标签: iphone facebook ios

所以,我一直在搞乱Facebook iOS SDK,从最新版本开始,我无法调用fbDidLogin方法。登录过程正常,在模拟器上使用Safari,在设备上运行时使用Facebook应用程序。但是,在登录后我会被转移回我的应用程序(我应该这样),但由于没有调用fbDidLogin方法,所以没有任何改变。至于我的应用程序,我没有登录。 与SDK捆绑在一起的演示应用程序运行正常。所以我显然做错了什么,但我不知道如何检查什么。我对我自己的演示应用程序中使用的所有方法进行了三重检查,据我所知,一切看起来都一样。有关如何调试此问题的任何想法或想法?或者有没有人有类似的问题?

谢谢!

7 个答案:

答案 0 :(得分:32)

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

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

其中controller是我的UIViewController实例,facebook是我的Facebook实例。

您还需要注册您的应用以处理您的fb应用程序的URL方案(在Info.plist中执行此操作)。

答案 1 :(得分:6)

一个常见的错误可能是在主应用程序委托中没有实现以下回调方法,但在其他地方。在从UIApplicationDelegate派生的类中实现此方法。这是iOS在上下文切换后调用以将应用程序带回前台的入口点。

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

我的原因是我在ApDelegate中没有使用正确委托的Facebook初始化。当它应该使用用户实际执行登录的视图控制器时,我指向了self。

来自AppDelegate:

facebook = [[Facebook alloc] initWithAppId:@"111111111111111" andDelegate:homeViewController];

答案 4 :(得分:1)

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

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

如果有效,请相信

答案 5 :(得分:1)

就像Jiri在第一条评论中所说的那样你应该在app appate

中实现这些方法
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [[loginScreen facebook] handleOpenURL:url];
}

如果loginScreen是您想要用于记录或使用Facebook制作其他任何东西的视图控制器,那么它就是除了App委托之外的其他地方。

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

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

}

答案 6 :(得分:0)

我最近刚刚遇到过这个。我的问题是,Facebook上的应用程序设置是以一种方式配置的,即应用程序未被授权。因此,我的fbDidNotLogin方法被调用。解决方案是去

  • Facebook Developers - > Apps - > My App - > Edit Settings - > Basic
  • 请确保在“选择您的应用与Facebook集成的方式”部分中未启用“原生iOS应用”类别(绿色复选标记)。