用户对 facebook 进行身份验证后未调用应用程序打开 Url 方法

Posted

技术标签:

【中文标题】用户对 facebook 进行身份验证后未调用应用程序打开 Url 方法【英文标题】:application open Url method not called after user authenticates the facebook 【发布时间】:2012-09-20 15:29:02 【问题描述】:

我已将我的 ios 应用程序中的 facebook 升级到 3.0,并使用https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ 提供的代码让用户通过 facebook 登录,但问题是在用户允许 facebook 访问之后,- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 方法不是叫。但有趣的是,当我创建一个新应用程序并在该应用程序中集成相同的代码时,会在那里调用相同的方法。我使用的是 xcode 4.4。任何建议为什么我现有的代码会发生这种情况。

【问题讨论】:

【参考方案1】:

确保您已设置好 fburl 和 appid。如果设备/模拟器有多个使用相同 facebook appId 的应用程序,则可能会发生这种情况。

【讨论】:

【参考方案2】:

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

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey];

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

【讨论】:

【参考方案3】:

已将 xcode 更新为 4.5 GM 以正常工作,可能是 xcode 以前版本的问题。

【讨论】:

以上是关于用户对 facebook 进行身份验证后未调用应用程序打开 Url 方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Passport 和 ExpressJS 进行 Facebook 身份验证 - 为啥不调用验证回调?

如何在 Facebook Flash 应用程序中进行身份验证?

身份验证质询后未调用 URLSession 委托

在 Android 中单击 Facebook 登录按钮后未显示 Facebook 身份验证对话框

使用 facebook 登录并使用 oauth 2.0 对 REST api 调用进行身份验证

如何在 android 应用程序上使用 facebook 对服务器上的用户进行身份验证