FB不是由javascript定义的
我对FB JS SDK有问题 我正在尝试请求获取facebook页面节点的粉丝数 以下是我从html文件到正文的代码:FB不是由javascript定义的,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我对FB JS SDK有问题 我正在尝试请求获取facebook页面节点的粉丝数 以下是我从html文件到正文的代码: <script> window.fbAsyncInit = function() { FB.init({ appId : 'your-app-id', xfbml : true, version : 'v2.5' }); }; (function(
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.5'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
但错误在于没有定义FB。有什么建议吗 这是正确的,您需要在JS SDK初始化后使用FB。话虽如此,您肯定不想在无限循环中调用FB.api,因此我删除了该部分:
<script>
function init() {
FB.api(
'/l214.animaux',
{"fields":"fan_count"},
function(response) {
alert(response.fan_count);
}
);
}
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.5'
});
init();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
函数init(){
FB.api(
“/l214.animaux”,
{“字段”:“fan_count”},
功能(响应){
警报(响应、风扇计数);
}
);
}
window.fbAsyninit=函数(){
FB.init({
appId:'您的应用程序id',
xfbml:是的,
版本:“v2.5”
});
init();
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
请确保从实际服务器上运行此操作,不要在浏览器中打开HTML文件,而至少没有本地服务器。我之所以出现此错误,是因为我在一个独立的js文件中编写了init代码,因此,
FB
当然没有定义,因为它应该是window.FB
我的代码:
class FacebookUtil {
static init() {
// comes from https://developers.facebook.com/docs/javascript/quickstart
// notice FB should be window.FB
window.fbAsyncInit = function() {
window.FB.init({
appId : '...',
autoLogAppEvents : true,
xfbml : true,
version : 'v2.10'
});
window.FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
static login() {
window.FB.login(...)
}
}
你应该
init
作为回调URI,或者让sue FB比init先加载。所以我必须在fbAsyncint
函数的末尾调用init
函数?这似乎不适合我:)看:你也不能在Javascript中做这样的无限循环,而期望ajax调用在其中工作。那是行不通的。好的,谢谢,我去看看@jfriend00你是对的,我会改变的。谢谢你的回答,现在我不知道这个错误的FB是没有定义的。但是,从未调用init函数。我跳过了你的代码,只在开始时添加了console.log in init函数,web浏览器控制台保持空白,我想JSSDK没有加载。您是在实际的Web服务器上尝试此操作,还是只是在本地浏览器中打开html文件?我使用html文件在本地打开它。当然,这不起作用。尝试使用真正的服务器(在本地主机或真正的服务器上)。您也可以将“https”添加到sdk源代码中,但我不建议这样做。现在开发人员使用localhost进行开发,仅仅在浏览器中打开一个html文件已经不再是这样了。明天我将实现一个localhost服务器
class FacebookUtil {
static init() {
// comes from https://developers.facebook.com/docs/javascript/quickstart
// notice FB should be window.FB
window.fbAsyncInit = function() {
window.FB.init({
appId : '...',
autoLogAppEvents : true,
xfbml : true,
version : 'v2.10'
});
window.FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
static login() {
window.FB.login(...)
}
}