【问题标题】:Facebook API sending Error response when trying to run with localhostFacebook API 在尝试使用 localhost 运行时发送错误响应
【发布时间】:2012-07-23 12:03:39
【问题描述】:

我在本地主机上创建了一个小应用程序。

我已经检查了wieshark:

请求是:

HTTP 获取: http://www.facebook.com/dialog/oauth?api_key=APPID&app_id=APPID&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df17ca8709c%26origin%3Dhttp%253A%252F%252F127.0.0.1%253A8080%252Ffd1147b44%26domain%3D127.0.0.1%26relation%3Dparent.parent&client_id=121312018012923&display=none&domain=127.0.0.1&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df164e7a46c%26origin%3Dhttp%253A%252F%252F*127.0.0.1%253A8080%*252Ffd1147b44%26domain%3D127.0.0.1%26relation%3Dparent%26frame%3Df216567208&response_type=token%2Csigned_request%2Ccode&sdk=joey

Facebook 正在发送 200 OK:

[截断] 应用程序配置不允许给定 URL。:应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是一个 o 的子域

我不明白问题是什么: 我在我的本地主机上运行了 XAMPP。 在我的画布和站点 URL 中:http://mytestdomain.com:8080

在我的 /etc/hosts 机器中,我有 127.0.0.1 mytestdomain.com。

我正在运行的实际代码

<body>
        <div id="fb-root"></div>
<script>

      window.fbAsyncInit = function() {
          FB.init({appId: 'APPID', status: true, cookie: true, xfbml: true});

      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());

      FB.getLoginStatus(function(response) {         
        if (response.status == "connected") {
        alert("yes I am in ");
        }
        else{
        alert(" you need to login to facebook:");
        }
        });

    function checkFacebookLogin() {
    alert("hai");
    }

    </script>


 <p id="fb_login_button_1"><fb:login-button onlogin="checkFacebookLogin();" size="medium" scope="email">Sign in using Facebook</fb:login-button></p>

</body>

【问题讨论】:

    标签: facebook facebook-graph-api


    【解决方案1】:

    看看以下内容,然后尝试:

    1. 应用程序域:your-domain.com
    2. 使用 Facebook 登录的网站:your-domain.com:8080
    3. 在 C:\Windows\System32\drivers\etc\hosts 中,添加条目 127.0.0.1 your-domain.com
    4. 在浏览器地址栏输入:http://your-domain.com:8080/appname

    就是这样!

    【讨论】:

    • -1 这绝对不会增加任何内容。 OP已经配置了 /etc/hosts。
    【解决方案2】:

    另一种可能性:在我的情况下,我有多个 WP 插件/脚本调用 FB 代码,并且本地和生产上的 AppID 不同 - 在某个阶段我忽略了本地/生产配置之间的冲突。

    【讨论】:

      【解决方案3】:

      尝试在本地服务器上设置虚拟主机。你做的一个,你将能够创建虚拟 URL。如果您随后将 facebook 应用程序中的 URL 设置为虚拟 URL,我相信您将能够从本地服务器进行一些 facebook 调用,但是如果我没记错的话,您仍然无法发布到图表。

      【讨论】:

        【解决方案4】:

        我认为您可能会为多个网站使用相同的应用程序和密钥。 您需要更改站点的应用程序和密钥,您可以从中生成密钥 应用程序facebook developer

        对我来说这很有效,希望对你有帮助

        【讨论】:

          【解决方案5】:

          您在 Visual Studio 中调试的地址需要与您的 https://developers.facebook.com/“站点 URL”完全匹配。我建议使用 IIS 进行调试并手动创建一个虚拟目录以匹配您的站点 URL。 (此外,您不必指定端口,如果它不是默认的 80 或 443 端口,我发现有时会导致问题)

          就我的这个问题而言,调试时我有一个“http://www.domain.com/App”,但我的 Facebook 开发者网站 URL 是“http://domain.com/App”。我还看到人们把斜杠“/”去掉,或者用“https”代替“http”。

          最重要的是,您需要确保您的网址匹配正确。 Facebook 似乎非常挑剔。

          【讨论】:

            【解决方案6】:

            据我所知。 Facebook 不再允许在 localhost 中测试您的应用程序。

            【讨论】:

            • 感谢 Mosman 从我在网上看到的内容和堆栈溢出问题,我认为 Zurek 建议支持它
            【解决方案7】:

            在您的 Facebook 应用配置中,您的应用 URL 是否指向您的本地主机?

            【讨论】:

            • 感谢 Zurek 的回复。是的,我让它指向本地主机。
            • 我尝试了 2 种组合:站点 url 和画布 url = localhost:8080 2) 站点 url 和画布 url = mytestapp.com:8080。在我的主机文件中,我有 mytestapp 127.0.01
            • 不,这就是我所说的。我尝试了 2 种组合,但仍然无法正常工作,这就是我所说的(我在最初的帖子中也说过)
            • 如果你看到我最初的帖子:我说我有站点 url,canwas url 有 localhost。但它仍然无法正常工作。如果您看到 Get 请求,它正在发送 127.0.0.1 但有些 FB 拒绝
            猜你喜欢
            • 2020-03-24
            • 1970-01-01
            • 1970-01-01
            • 2016-11-24
            • 2020-08-27
            • 2012-01-26
            • 2015-02-18
            • 1970-01-01
            • 2020-09-28
            相关资源
            最近更新 更多