Facebook 已调用FB.init-这可能表明
我有一个facebook按钮没有SDK:Facebook 已调用FB.init-这可能表明,facebook,facebook-like,Facebook,Facebook Like,我有一个facebook按钮没有SDK: <fb:like href="<%= @canonical_url %>" send="" layout="button_count"></fb:like> <div id="fb-root"> </div> <script> // facebook recommend button window.fbAsyncInit = functio
<fb:like href="<%= @canonical_url %>" send="" layout="button_count"></fb:like>
<div id="fb-root"> </div>
<script>
// facebook recommend button
window.fbAsyncInit = function() {
FB.init({appId: 'myappid', status: true, cookie: true, xfbml: true});
};
(function() {
// delay to simulate slow loading of Facebook library - remove this setTimeout!!
var t = setTimeout(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/<%= locale_og_tag %>/all.js';
document.getElementById('fb-root').appendChild(e);
}, 0);
}());
</script>
</div>
但我进入控制台:
FB.init has already been called - this could indicate a problem
如何解决此问题?
谢谢大家! 您已经使用window.fbasyninit调用了FB.init,并且已经在第一个代码块中加载了FB脚本
这意味着您应该删除第二个代码块,您应该会没事。您已经用window.fbasyninit调用了FB.init,并且已经在第一个代码块中加载了FB脚本
这意味着您应该删除第二个代码块,您应该没事。您正在调用
FB.init()
两次。。。您可能需要注意该错误消息的建议:P
你只需要调用它一次,如果没有加载SDK,你就不能调用它,所以,你必须有SDK。您可以调用
FB.init()
来设置参数,例如app\u id
,是否在初始化过程中呈现xfbml
等 那么您正在调用FB.init()
两次。。。您可能需要注意该错误消息的建议:P
你只需要调用它一次,如果没有加载SDK,你就不能调用它,所以,你必须有SDK。您可以调用
FB.init()
来设置参数,例如app\u id
,是否在初始化过程中呈现xfbml
等 您有三个init调用-两个通过FB.init
显式调用,一个通过。/all.js#xfbml=1
隐式调用。删除#xfbml=1
部分以及FB.init
s中的任何一个,您应该很好。您有三次对init的调用-两次通过FB.init
显式调用,一次通过隐式调用。/all.js#xfbml=1
。删除#xfbml=1
部分以及FB.init
s中的任何一个,您应该很好。只需将登录表单与其他页面分开即可。因此,您不需要多次加载FB.init()。只需将登录表单与其他页面分开即可。因此,您不需要多次加载FB.init()。也许它会对其他人有所帮助,比如我,他们有类似标题的问题,并且没有找到解决方案
Facebook的文档有误,举个例子:
<script crossorigin="anonymous" src="https://connect.facebook.net/pl_PL/sdk/debug.js#xfbml=1&version=v7.0&appId={your app id}&autoLogAppEvents=1"></script>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{your app id}',
cookie : true,
xfbml : true,
version : 'v7.0'
});
FB.AppEvents.logPageView();
FB.getLoginStatus(function(response) {
console.log(response);
});
};
</script>
window.fbAsyninit=函数(){
FB.init({
appId:“{your app id}”,
曲奇:是的,
xfbml:是的,
版本:“v7.0”
});
FB.AppEvents.logPageView();
FB.getLoginStatus(函数(响应){
控制台日志(响应);
});
};
但这是错误的,因为在facebook脚本的url中,已经有人初始化了FB对象(给出了应用程序id)
这就是为什么需要选择这种方法:
- 或者在不提供应用程序id的情况下包含facebook脚本,然后明显地调用FB.init(…)
- 或者包含带有应用id的facebook脚本,然后省略调用FB.init(…)
- 或者在不提供应用程序id的情况下包含facebook脚本,然后明显地调用FB.init(…)
- 或者包含带有应用id的facebook脚本,然后省略调用FB.init(…)
FB.init()
两次。。。而且你已经加载了SDK——否则你就不能调用FB.init()
@fra了——实际上我应该把VTC称为“太本地化了”。。。但既然你问得这么好……;)简单-不要调用FB.init()
两次。。。而且你已经加载了SDK——否则你就不能调用FB.init()
@fra了——实际上我应该把VTC称为“太本地化了”。。。但既然你问得这么好……;)顺便问一下,#xfbml=1的含义是什么?我的用法就是这样。谢谢Sean顺便问一下#xfbml=1的含义是什么?我的用法就是这样。谢谢,肖恩