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)
该问题与我在我的应用中使用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。希望这有助于一些。
嘿,我有这个相同的问题,你是如何解决它的? – Andres
我设置了Facebook的下两个后缀为我的应用程序:免费和付费的,如fbxxxxxxpaid
他们的工作完全正常SDK 2.0下,但在3.2我的应用程序不叫回来,我卡住了与空画布与取消按钮。
我从URL Schemes中删除了后缀,它立即生效。
我不得不根据本https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
不知道做什么用你的应用中发生的更新我的应用程序。但在我的应用程序中,我的Appdelegate.m中没有第一个App委托方法。只有第二个。另外,您可能想在我的教程博客中查看我的示例项目:http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html。另外,我想补充一点,如果你有2个应用程序(比如精简版和专业版),为这两个应用程序使用相同的FacebookAppID将会导致崩溃。如果你想为2个或更多的应用程序使用相同的fbappid,还有一些额外的事情要做(请参考facebook开发者wiki) – GeneCode
我也有同样的问题,但与Facebook SDK 2.0,所以我怀疑它是与iOS 6有关 –
由openActiveSessionWithPermissions在IOS 3.1中已经被弃用了,但是我不认为它与那个有关。你应该授予阅读withopenActiveSessionWithReadPermissions和openActiveSessionWithPublishPermissions的权限以发布 –