7

我正在尝试按照此处的教程进行操作。但是,当我使用似乎有效且正确的参数调用 FB.init(...) 时,我收到错误消息:“应用程序配置不允许给定 URL。:一个或多个给定 URL 不允许应用程序的设置。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。 “我已经搜索 ( 1 2 ) 以查找此错误,但其他所有人似乎都无法简单地设置Facebook 应用程序配置的站点 URL。我有 99% 的把握我已经正确设置了这个 - 但显然我做错了什么。

这是我的导致问题的代码。出于隐私原因,我用“XXX”和“YYY”替换了一些信息。

<html>
<body>
<h1>Facebook</h1>
<div id="fb-root"></div>
<script>
  // Additional JS functions here
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'XXX', // App ID
      channelUrl : '//YYY.com/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

  };//window.fbAsyncInit()

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "http://connect.facebook.net/en_US/all/debug.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>
</body>
</html>

请注意,我必须更改教程中给出的示例中靠近代码底部的 js.src 参数。我怀疑这会导致我的具体问题,但对教程中的代码质量提出了一些担忧。(当教程代码不起作用时,我讨厌它 - 有什么意义?)

您可以在上面的代码中看到我已将域名的根替换为“YYY”。保持这个简单的替换是我的 Facebook 应用程序配置中的一些值:

App ID: "XXX"
Display Name: "[blah blah blah]"
Namespace: "YYY"
App Domains: "YYY.com"
Sandbox Mode: "Enabled"
Canvas Page: "http://apps.facebook.com/YYY"
Canvas URL: "http://YYY.com/canvas/"

我不确定您可能需要哪些其他细节来帮助我。列出的所有 URL 都可以正常工作。谢谢你的帮助!

4

1 回答 1

7

请注意,我必须更改教程中给出的示例中靠近代码底部的 js.src 参数。

为什么?您是否只是通过从文件系统调用浏览器中的页面而不是通过本地 Web 服务器通过 HTTP 进行测试?

如果是后者,那么您没有“域”可供 Facebook 验证您的请求来源。设置本地 Web 服务器,通过它调用您的文档,然后重试,

于 2012-11-29T11:05:28.567 回答