我在我的控制台中显示此消息
FB.getLoginStatus() called before calling FB.init().
我的代码
<div id="fb-root"></div>
<script>
// 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 = \"//connect.facebook.net/fr_FR/all.js#xfbml=1\";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
<div class="fb-like" data-send="false" data-layout="button_count" data-width="100" data-show-faces="false"></div>
我不明白为什么。我在我的所有网站上只有一个关于这个facebook插件的电话。
答案 0 :(得分:92)
将&status=0
添加到您的js.src
网址,以使警告消失,即:
//connect.facebook.net/fr_FR/all.js#xfbml=1&status=0
FB.init()
。这里传递xfbml
,因此调用FB.init()
。
(源代码:http://connect.facebook.net/fr_CA/all/debug.js本行发表时的第8699行)
如果未明确提供,则使用init()的默认参数:status
arg默认为true
- 这使得FB脚本在启动时调用getLoginStatus()
,因为应用程序而抱怨该函数调用需要ID。
FB社交插件不需要应用ID - 它们会呈现为来自facebook.com的iframe,因此可以访问FB登录状态和Cookie。
FB developers Social Plug-ins section中的“获取代码”向导会生成一个包含xfbml
参数的网址,应该使用status=0
参数恕我直言更新。
答案 1 :(得分:1)
如果在实施
解决方案后看到“无效的应用ID”警告https://stackoverflow.com/a/16593474/1428052
然后将appId添加到您的js.src URL以使其适用于您,即:
// connect.facebook.net/en_US/all.js#xfbml=1&status=0&appId=YOUR_APP_ID
此appId的存在将使用基本应用程序设置自动调用FB.init()。
答案 2 :(得分:0)
警告:下面有一些猜测。如果那不行,我可以删除它。
我认为问题在于异步加载SDK而内联的Like按钮。然后,在加载脚本之前,Like按钮可能会调用getLoginStatus。您可以通过注释掉脚本以异步加载SDK来测试/验证这一点,而是将其作为页头中的普通脚本标记包含在内。
当然,这只是一种简单的测试方法。如果您可以验证问题,那么解决它的“正确”方法可能是确保在SDK加载之前,Like按钮不会出现在页面上。
答案 3 :(得分:0)
我回答了类似的问题here 实际上,如果你根本看不到Like按钮,那么这个问题与另一个问题完全相同。
在我的情况下,我看到控制台错误,但我做也看到了Like按钮。
答案 4 :(得分:0)
您需要在调用fb登录状态函数
之前调用FB.init
函数
<div id="fb-root"></div>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'YOUR APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});
// 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 = \"//connect.facebook.net/fr_FR/all.js#xfbml=1\";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
答案 5 :(得分:0)
我使用此代码了解它:
<!--[if IE]>
<script src="https://connect.facebook.net/pt_BR/all.js?xfbml=1" type="text/javascript"></script>
<![endif]-->
<script src="https://connect.facebook.net/pt_BR/all.js#xfbml=1" type="text/javascript"></script>
<div class="fb-like"
data-href="https://www.myurl.com"
data-send="true" data-layout="button_count"
data-width="50" data-show-faces="false"></div>