【问题标题】:Error messages when trying to use the Facebook API尝试使用 Facebook API 时的错误消息
【发布时间】:2016-11-24 11:44:53
【问题描述】:

我在尝试使用 Facebook API 时收到一条错误消息。

当我启用客户端 OAuth 登录、启用 Web OAuth 登录并将有效的 Oauth 重定向 URI 设置为 http://localhost:8000/ 时,我在尝试使用正确的应用 ID 登录 Facebook 时遇到以下错误:

URL 被阻止:此重定向失败,因为重定向 URI 未在应用的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将您的所有应用程序域添加为有效的 OAuth 重定向 URI。

我是否必须在代码中添加特定设置或内容才能使其正常工作?

这是我得到的代码:

    $(window).load(function() {
        if (window.cordova.platformId == "browser") {
            facebookConnectPlugin.browserInit(MYAPPIDHERE);
        }
    });

还有这个:

            facebookConnectPlugin.login(["user_likes"],
                    function(response) {
                        likes();
                    },
                    function(response) {
                        likes();
                    });
        }

编辑:

添加了 Facebook 应用程序中的图片以及我从中导航的 URL。

【问题讨论】:

  • 您需要按照消息中的说明进行操作……在应用仪表板的设置中输入正确的信息。 (提示:这些设置的位置已经改变,它们现在在 Products->Facebook Login 下。如果后者没有显示,你必须先添加它。)
  • 信息在那里。我在那个部分有localhost:8000
  • 我添加了相关屏幕的图片。
  • http://localhost:8000/ 可能不是登录对话框调用中使用的redirect_uri 参数的完整值。
  • 就是这种情况。这一切都在一个单页 PhoneGap 应用程序中,并且全部从localhost:8000 启动

标签: facebook api oauth


【解决方案1】:

您可能需要检查 facebookConnectPlugin 发出的 HTTP 调用,并查看查询字符串中的 redirect_uri 是否与您在 Facebook 应用设置中作为有效重定向 URI 的匹配。 它可能看起来像这样:

https://www.facebook.com/dialog/oauth?client_id={FB_APP_ID}&redirect_uri=http://localhost:8000/

编辑:

facebookConnectPlugin 使用的redirect_url=http://static.ak.fbcdn.net/connect/xd_proxy.php#cb=f11b73fd18e512c# 似乎存在问题。我检查了javascript code,它使用的是phonegap/plugin/facebookConnectPlugin/fbsdk.js,这似乎是罪魁祸首。

当我使用直接加载 FB SDK 时,它使用了不同的redirect_url=http://staticxx.facebook.com/connect/xd_arbiter/r/RYqXvcNXPI-.js?version=42。用这个替换以前的redirect_url 为我解决了这个问题。 phonegap 的 fbsdk.js 可能使用过时的脚本。

底线:直接加载FB SDK会更好,如here所述。根据FB docs,它看起来像这样:

<script>
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
</script>

最后,要启用调试日志,请将 //connect.facebook.net/en_US/sdk.js 替换为 //connect.facebook.net/en_US/sdk/debug.js

【讨论】:

  • 看起来像这样:facebook.com/dialog/oauth?api_key={FB_APP_ID}&app_id={FB_APP_ID}&client_id={FB_APP_ID}&display=popup&domain=localhost&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.fbcdn.net %2Fconnect%2Fxd_proxy.php%23CB%3Df11b73fd18e512c%26origin%3Dhttp%253A%252F%252Flocalhost%253A8000%252Ffb572a6b00d4b%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df2a7da35ea99ccc&RESPONSE_TYPE =记号%2Csigned_request&范围= user_likes&SDK =乔伊跨度>
  • 我能够从此链接复制您的问题。问题似乎是static.ak.fbcdn.net/connect/xd_proxy.php 的使用。当我用http://staticxx.facebook.com/connect/xd_arbiter/r/RYqXvcNXPI-.js?version=42 替换它时,它对我来说很好。我是通过使用 FB sdk 的直接脚本嵌入得到的。请允许我编辑我的帖子以获取更多详细信息。
  • 这仅仅是SDK的更新还是什么?
  • thisthis 等一些链接表示 xd_proxy.php 已替换为 xd_arbiter。
  • 是的,这就是答案。非常感谢胡里奥!很遗憾我不能奖励你,因为它已经过期了:(
【解决方案2】:

Javascript API 无法在 PhoneGap 上进行登录。 改用这个cordova插件。

https://github.com/Wizcorp/phonegap-facebook-plugin

【讨论】:

  • 我正在使用这个插件。
【解决方案3】:

Facebook 不可能重定向到本地 URL。 happen 将是您将用户重定向到 Facebook,他们登录,Facebook 对此进行验证并将其发送回您。 Facebook 将它们发送到您提供的 URL。 URL http://localhost:8000 是一个简写:连接到您自己的机器上的端口 8000。在 Facebook 进行重定向时,localhost 指的是 Facebook,不再是您。显然,Facebook 已将这些内容列入黑名单 - 可能是出于安全原因。

您需要一个 Facebook 可以重定向到的公共 URL。也许this 有帮助?

【讨论】:

  • 该链接似乎表明 localhost 应该可以工作。您是否认为这可能是最近的变化?
  • 个人认为 localhost 是不行的,但是后来找到了链接的问题,加上了,以防我错了。您能否尝试重定向到 example.com(将其列入白名单),看看是否可行?
【解决方案4】:

试试这些:

  1. 将 URI 设置为 http://localhost/(无端口)
  2. 使用相应的回调函数在redirectURI 处放置一个回调。即http://localhost/loginCallback

报告任何错误,我觉得第一种方法可以工作。

【讨论】:

  • URL 被阻止:此重定向失败,因为重定向 URI 未在应用的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将所有应用程序域添加为有效的 OAuth 重定向 URI。第一种方法不行,第二种方法也行不通
猜你喜欢
  • 2017-05-13
  • 2013-02-14
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多