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