我正在尝试按照这里的教程进行操作,但是当我使用看起来正确的参数调用FB.init(...)时,出现了错误消息:“应用配置不允许给定的URL:其中一个或多个给定的URL不被该应用程序的设置所允许。它必须与网站URL或画布URL匹配,或者该域必须是应用程序域中的子域。”。我已经查找了(1 2)这个错误,但其他人似乎只是在简单地设置Facebook应用程序配置的网站URL上遇到麻烦。我确信我已经正确设置了这一点——但显然我做错了些什么。
请注意,我不得不在代码底部更改js.src参数,与教程中给出的示例不同。我怀疑这不会导致我的特定问题,但对教程中代码的质量表示担忧。(我讨厌教程代码不起作用的情况 - 这有什么意义?)
您可以在上面的代码中看到,我已将域名根替换为“YYY”。保持此简单替换,以下是我Facebook应用程序配置的一些值:
下面是引起问题的代码。由于隐私原因,我用"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都是正常工作的。感谢任何帮助!