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

时间:2013-09-06 12:28:16

标签: iphone ios facebook-ios-sdk

我在我的应用程序上使用此代码启动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启动,但我得到了: enter image description here

我读到这个错误与plist文件中的URL键有关,一切看起来都没问题

enter image description here

以下是facebook app的一些设置:

enter image description here

enter image description here

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

有什么想法吗?

由于

更新

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

enter image description here

您可以看到我上次更改了应用ID。我只是创建另一个Facebook应用程序(我也更改了包ID)

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

3 个答案:

答案 0 :(得分:0)

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

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

enter image description here

答案 1 :(得分:0)

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

在此related post中,您可以看到redirect_uri必须设置为完整的URL,以便在登录过程完成后将用户重定向到该URL。 但我认为redirect_uri不能通过Facebook从iOS应用程序登录。

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

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

答案 2 :(得分:0)

If you are using Facebook SDK, you don't need to bother yourself to enter
anything for redirect URI on the app management page of facebook. Just setup a 
URL scheme for your iOS app.
The URL scheme of your app should be a value "fbxxxxxxxxxxx" where xxxxxxxxxxx is
your app id as identified on facebook.
To setup URL scheme for your iOS app, go to info tab of your app settings
and add URL Type.