我在 Stack Overflow 上多次看到了这个问题。大多数情况下,用户会两次调用 Facebook 的 js 文件(all.js),或者未提供应用程序 id。但是我的情况不同。我只引用了一次 all.js,并设置了应用程序 id。但是当我单击登录按钮时,仍然出现“FB.login() called before calling FB.init()”错误。登录按钮的标记如下:
<fb:login-button autologoutlink="true" perms="email,user_birthday,user_about_me,publish_stream"></fb:login-button>
而JavaScript代码是
<script type="text/javascript">
FB.init({appId: '${section.parameters['facebook.app.id']}', status: true, cookie: true, xfbml: true});
/* All the events registered */
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
//logout();
});
function setFacebookStatus(form) {
var status = $('#comment-form-body').val();
var params = {};
params['message']= status;
params['link'] = '${article.url}';
FB.api('/me/feed', 'post',params, function(response) {
if (!response || response.error) {
alert('Error occured');
}
else {
alert('<fmt:message key="comment.form.facebook.success" />');
$("#facebookComment").overlay().close();
form.submit();
}
});
}
</script>
我已经在我的HTML页面头部添加了all.js文件。我对这个问题感到非常恼火。如果您能帮助我,我将不胜感激。 编辑 还有一件事要提醒一下。有时它可以正常工作,有时它会显示警告。比如说,如果我在另一个选项卡中登录了Facebook,然后退出Facebook。然后我刷新了嵌有Facebook的网站页面,然后就会出现警告。主要问题是有时它可以工作,有时不能。