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

标签 ios facebook ios6 openurl

第二次更新 在进行更多挖掘之后,似乎有一个更大的问题在起作用。

未触发 openURL 的原因是应用程序在返回前台时似乎卡住了。

如果我启动我的应用程序,单击主页按钮(返回主屏幕),然后重新加载我的应用程序(不是完全重新启动,而是只是恢复),应用程序打开,但一切都被卡住。

-(void)applicationWillEnterForeground:(UIApplication *)application

在应用程序返回时被触发,但是之后什么也没有发生。使用 IOS 6.0 的模拟器我完全没有崩溃,但应用程序只是坐在那里什么都不做。点击屏幕什么都不做。如果我点击主屏幕,我可以返回主屏幕。

所以 openIURL 未被触发的原因是因为应用程序在从 Safari 或 Facebook 应用程序从 Facebook 登录返回时卡住。它与 facebook SDK 无关。

为什么会这样?

更新 问题似乎与未调用 openURL 有关。当从 safari 或 facebook 应用程序执行自定义 URL 时,该应用程序会打开。如果我创建一个全新的应用程序,它确实有效。

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

我有一个使用 facebook SDK 3.0 登录 facebook 的应用。

在 IOS 5 下,流程按预期工作,我确实看到了 IS LOGGED IN 的输出:

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];

在我的应用委托(delegate)中,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 永远不会被回调。

我已经根据 facebook 文档在我的 .plist 文件中提供了必要的信息

FacebookAppID = (My Facebook App ID)

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

最佳答案

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

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey];

但我还没有想出如何调用它,以便它在从 Facebook 身份验证返回时具有与 application:openURL 相同的效果。希望这对一些人有所帮助。

关于ios - Facebook SDK 3.0 IOS 6 登录后回调未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497465/

相关文章:

objective-c - 在没有 CoreTelephony 的情况下获取 iPhone 运营商

iOS7 - 为什么当我以 iOS 6 或 7 的方式查看时页面元素会发生变化

ios - 在 iOS 6 而不是 iOS 7 上运行时出错

ios - (XCode 7.1.1) 如何让 ImageView 居中?

ios - 手机响时,iOS运行应用程序

ios - 再次安装 cocoapods 后,如何保留我在 Pod 依赖项中所做的更改?

javascript - 使用 Facebook 的 Loopbackjs 社交登录

facebook - 如何为您的 Facebook 应用程序创建虚假用户进行测试?

ios - Facebook SDK 启动到 Safari 而不是应用程序 (Swift)

objective-c - 如何显示 [AVPlayerItemVideoOutput copyPixelBufferForItemTime :]? 的结果