Facebook SDK 3.0 IOS 6回拨登录后未调用

问题描述:

第二次更新 在做了更多的挖掘之后,似乎有一个更大的问题。Facebook SDK 3.0 IOS 6回拨登录后未调用

openURL没有被解雇的原因是应用程序被带回到前台似乎是冻结的。

如果我启动我的应用程序,单击主页按钮(回到主屏幕),并重新加载我的应用程序(不完全重新启动,但只是一个恢复),应用程序打开,但一切都冻结。

- (空)applicationWillEnterForeground:(UIApplication的*)应用

当应用程序回来被激发,没有任何反应后不过。使用IOS 6.0的模拟器我根本没有崩溃,但应用程序只是坐在那里什么都不做。点击屏幕什么都不做。如果我点击主屏幕,我可以回到主屏幕。

因此,openIURL没有被解雇的原因是因为当它从Facebook或Facebook应用程序返回Facebook登录时应用程序冻结。它与facebook SDK无关。

这是怎么发生的?

更新似乎这个问题与openURL没有被调用有关。当从Safari或Facebook应用程序执行自定义网址时,该应用程序会打开。如果我创建一个全新的应用程序,它确实有效。

另一个相关的问题application open Url method not called after user authenticates the facebook

我有一个使用Facebook登录使用Facebook的SDK 3.0的应用程序。

在IOS 5的运作流程有意和我看到的记录在输出:

NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream",@"offline_access",@"email",nil]; 

[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES 
completionHandler:^(FBSession *session, 
        FBSessionState status, 
        NSError *error) { 
    if(session.isOpen){ 
     NSLog(@"IS LOGGED IN"); 
    }         
}]; 

[permissions release]; 

在我的应用程序委托的OpenURL功能如下

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

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [[FBSession activeSession] handleOpenURL:url]; 
} 

同样,下IOS 5在通过Facebook成功登录后调用openURL函数。

在IOS 6下,当我执行openActiveSessionWithPermission(登录)时,openURL永远不会被回调。

我在我的.plist文件根据Facebook的文档

FacebookAppID = (My Facebook App ID) 

URL types 
-> Item 0 
    -> URL Schemes 
     -> Item 0 = (My Facebook App ID) 
+0

不知道做什么用你的应用中发生的更新我的应用程序。但在我的应用程序中,我的Appdelegate.m中没有第一个App委托方法。只有第二个。另外,您可能想在我的教程博客中查看我的示例项目:http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html。另外,我想补充一点,如果你有2个应用程序(比如精简版和专业版),为这两个应用程序使用相同的FacebookAppID将会导致崩溃。如果你想为2个或更多的应用程序使用相同的fbappid,还有一些额外的事情要做(请参考facebook开发者wiki) – GeneCode

+0

我也有同样的问题,但与Facebook SDK 2.0,所以我怀疑它是与iOS 6有关 –

+0

由openActiveSessionWithPermissions在IOS 3.1中已经被弃用了,但是我不认为它与那个有关。你应该授予阅读withopenActiveSessionWithReadPermissions和openActiveSessionWithPublishPermissions的权限以发布 –

该问题与我在我的应用中使用TWTweetComposeViewController的方式有关,所以它与facebook SDK无关。

问题是,我正在初始化我的ViewDidLoad中的TWTweetComposeViewController,直到需要时才使用它。但是,如果TWTweetComposeViewController未显示但已启动,它会在应用程序从后台模式进入时冻结它。

解决的办法是仅在您要显示它时启动TWTweetComposeViewController。

这是从Facebook Shireesh提供必要的信息。您能否在我们的开发人员网站上提交一个错误信息,以便我们详细了解它。请确保提供详细的repro步骤并在可能的情况下附上截图。 https://developers.facebook.com/bugs

这可能是因为您的应用程序设置为不在后台运行,如在应用程序plist中设置的那样?我一直有这个相同的问题。看起来,如果应用程序仍在后台运行,它将返回并调用openURL。但是如果应用程序不在后台运行,它将返回并调用application:didFinishLaunchingWithOptions,而不是调用openURL。它可以从启动选项得到的网址:

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; 

,但我还没有想出如何调用这个,使其具有与应用相同的效果:来自Facebook的身份验证返回时的OpenURL。希望这有助于一些。

+0

嘿,我有这个相同的问题,你是如何解决它的? – Andres

我设置了Facebook的下两个后缀为我的应用程序:免费和付费的,如fbxxxxxxpaid

他们的工作完全正常SDK 2.0下,但在3.2我的应用程序不叫回来,我卡住了与空画布与取消按钮。

我从URL Schemes中删除了后缀,它立即生效。

我不得不根据本https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/