我在 iOS 上使用 Facebook SDK 收到错误“redirect_uri URL 必须是绝对的”

Posted

技术标签:

【中文标题】我在 iOS 上使用 Facebook SDK 收到错误“redirect_uri URL 必须是绝对的”【英文标题】:I got the error "The redirect_uri URL must be absolute" with Facebook SDK on iOS 【发布时间】:2013-09-06 12:28:15 【问题描述】:

我在我的应用程序上使用此代码开始 facebook 登录:

    [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES
                              completionHandler:^(FBSession *session,
                                                  FBSessionState status,
                                                  NSError *error) 
                                  NSLog(@"#####################");
                                  // session might now be open.
                                  [self sessionStateChanged:session state:status error:error];
                              ];

Safari 启动,但我得到了:

我读到这个错误与 plist 文件中的 URL 键有关,一切正常

以下是 facebook 应用程序的一些设置:

这很奇怪。当然,我会仔细检查 fb ID 和捆绑标识符...

有什么想法吗?

谢谢

更新

我仅在模拟器上收到此错误消息。在真实设备上,我得到了另一个:

您可以看到我上次更改了应用程序 ID。我刚刚创建了另一个 facebook 应用程序(我也更改了 bundle id)

当然,我在我的 ios 应用程序和 facebook 应用程序设置中仔细检查了应用程序 ID 和捆绑包 ID 是否相同......那为什么它说应用程序 ID 无效?

【问题讨论】:

【参考方案1】:

附上我的 Facebook 应用设置以供参考!

安全画布 URL - 应该有一个以 https:// 开头的有效链接 画布 URL - 应该有一个以 http:// 开头的有效链接

【讨论】:

我做的是 iOS 应用,而不是 faceboo 应用 :) 你给我的设置在 iOS 应用的情况下是没用的【参考方案2】:

我认为问题不在于 plist 文件中的 URL 方案。

在这个related post 中,您可以看到redirect_uri 必须设置为一个完整的URL,当它被提供以在登录过程完成后将用户重定向到。 但我认为 redirect_uri 不需要通过 Facebook 从 iOS 应用程序登录。

在我看来,有两种方法可以探索解决这个问题:

    禁用 FB 选项:嵌入式浏览器 OAuth 选项 您的 plist 文件似乎没有提供现在需要的 FacebookDisplayName 密钥。请参阅Facebook iOS SDK Getting Started page。

【讨论】:

1) 当我禁用该选项时:嵌入式浏览器 OAuth 它是相同的,2) 如果我添加 FacebookDisplayName 仍然会出现错误:(【参考方案3】: 如果您使用的是 Facebook SDK,则无需费心进入 在 facebook 的应用程序管理页面上重定向 URI 的任何内容。只需设置一个 您的 iOS 应用程序的 URL 方案。 您的应用程序的 URL 方案应该是一个值“fbxxxxxxxxxxx”,其中 xxxxxxxxxxx 是 您在 Facebook 上标识的应用程序 ID。 要为您的 iOS 应用设置 URL 方案,请转到应用设置的信息选项卡 并添加 URL 类型。

【讨论】:

以上是关于我在 iOS 上使用 Facebook SDK 收到错误“redirect_uri URL 必须是绝对的”的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上使用带有 UIActivityViewController 的 Facebook SDK 会话对象

在设备上运行应用程序时,iOS Facebook SDK“用户取消登录”?

解析 iOS SDK PFLoginViewController Facebook Segue

openURL 崩溃:iOS 9 中可能存在 Facebook SDK 错误

适用于 iOs 的 Facebook SDK 无法正常工作

Facebook iOS SDK 用户配置文件登录属性