我在 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