初始化FB时出错:"给定的URL不被应用程序配置所允许。"

7
我正在尝试按照这里的教程进行操作,但是当我使用看起来正确的参数调用FB.init(...)时,出现了错误消息:“应用配置不允许给定的URL:其中一个或多个给定的URL不被该应用程序的设置所允许。它必须与网站URL或画布URL匹配,或者该域必须是应用程序域中的子域。”。我已经查找了(1 2)这个错误,但其他人似乎只是在简单地设置Facebook应用程序配置的网站URL上遇到麻烦。我确信我已经正确设置了这一点——但显然我做错了些什么。

下面是引起问题的代码。由于隐私原因,我用"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都是正常工作的。感谢任何帮助!

1个回答

7
注意,我不得不更改代码底部的js.src参数,这与教程中给出的示例不同。
为什么?你是在通过文件系统从浏览器调用你的页面进行测试吗?而不是通过本地Web服务器通过HTTP调用?
如果是后者,则您没有“域名”可以供Facebook验证您的请求原点。请设置一个本地Web服务器,通过它调用您的文档,然后再试一次。

谢谢,CBroe!就是这样。 - Carl Rossman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接