在我的主页中,我有这样的代码:
<body>
<div id="fb-root">
</div>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: "xxx",
channelUrl: "/xd_receiver.htm",
xfbml: false
});
};
</script>
....
</body>
在一个单独的。js文件中,我有我的facebook代码如下:
var Facebook = function () {
var pub = {};
var priv = {};
pub.Login = function () {
return priv.FacebookLogin();
};
priv.FacebookLogin = function () {
FB.login(function (response) {
if (response.authResponse) {
FB.api('/me', function (response) {
console.log("you are logged in");
return response;
});
}
});
};
return pub;
};
现在我的问题是,使用这样的代码,调用调用FacebookLogin函数的Login将返回控制台消息,登录在init之前调用,即使init是正确的fb说它应该是,就在标签之后。我测试将我的init调用置于我的FB之上。登录,然后它再次工作,所以有些东西是错误的安置。以前我有js文件(包含facebook功能)链接在标签内,但我确实试图把它放在初始化脚本之后,但我得到了同样的错误。(facebook函数的调用是在一个js文件链接在,这很重要吗?)
有人知道为什么我得到这个错误信息,FB.login()之前调用FB.init()?
问题似乎是实际的测试,当在本地主机测试时,我不得不重建允许我使用登录的项目,但如果我只是使用F5更新页面,那么我得到了这个问题。不是100%确定为什么,但我通过在更改后运行来解决它。