FB 未定义 javascript
FB is not defined javascript
我的 FB JS SDK 有问题。
我正在尝试请求获取 Facebook 页面节点的 fan_count。
这是我的 html 文件中的代码:
<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>
当我在我的 js 应用程序上使用它时,我使用它:
init();
function init() {
var id_fb = "l214.animaux";
while (true) {
console.log("je suis ici");
FB.api(
'/' + id_fb + '/',
'GET',
{"fields":"fan_count"},
function(response) {
alert(response.fan_count);
}
);
}
}
但是错误是没有定义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>
确保您 运行 来自实际服务器,不要只在没有本地服务器的情况下在浏览器中打开您的 HTML 文件。
出现这个错误是因为我把init代码写在一个独立的js文件里,所以,当然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(...)
}
}
如果你正在处理的是反应,这是我的解决方案代码。并且您必须停用脚本阻止设置(在勇敢的浏览器中我看到它正在阻止并且是该问题的原因)
import React from "react";
export const FacebookButton = ()=>{
const handleClick=()=>{
FB.login(function(response) {
if (response.authResponse) {
// console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
// console.log('Good to see you, ' + response.name + '.');
});
} else {
// console.log('User cancelled login or did not fully authorize.');
}
});
}
React.useEffect(()=>{
window.fbAsyncInit = function() {
window.FB.init({
appId : '380427166785990',
xfbml : true,
version : 'v11.0'
});
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'));
},[])
return(
<button onClick={handleClick}>Login</button> )
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from "react";
export const FacebookButton = ()=>{
const handleClick=()=>{
FB.login(function(response) {
if (response.authResponse) {
// console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
// console.log('Good to see you, ' + response.name + '.');
});
} else {
// console.log('User cancelled login or did not fully authorize.');
}
});
}
React.useEffect(()=>{
window.fbAsyncInit = function() {
window.FB.init({
appId : '0500550055050',
xfbml : true,
version : 'v11.0'
});
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'));
},[])
return(
<button onClick={handleClick}>Login</button> )
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
我的 FB JS SDK 有问题。
我正在尝试请求获取 Facebook 页面节点的 fan_count。
这是我的 html 文件中的代码:
<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>
当我在我的 js 应用程序上使用它时,我使用它:
init();
function init() {
var id_fb = "l214.animaux";
while (true) {
console.log("je suis ici");
FB.api(
'/' + id_fb + '/',
'GET',
{"fields":"fan_count"},
function(response) {
alert(response.fan_count);
}
);
}
}
但是错误是没有定义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>
确保您 运行 来自实际服务器,不要只在没有本地服务器的情况下在浏览器中打开您的 HTML 文件。
出现这个错误是因为我把init代码写在一个独立的js文件里,所以,当然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(...)
}
}
如果你正在处理的是反应,这是我的解决方案代码。并且您必须停用脚本阻止设置(在勇敢的浏览器中我看到它正在阻止并且是该问题的原因)
import React from "react"; export const FacebookButton = ()=>{ const handleClick=()=>{ FB.login(function(response) { if (response.authResponse) { // console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { // console.log('Good to see you, ' + response.name + '.'); }); } else { // console.log('User cancelled login or did not fully authorize.'); } }); } React.useEffect(()=>{ window.fbAsyncInit = function() { window.FB.init({ appId : '380427166785990', xfbml : true, version : 'v11.0' }); 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')); },[]) return( <button onClick={handleClick}>Login</button> ) }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from "react"; export const FacebookButton = ()=>{ const handleClick=()=>{ FB.login(function(response) { if (response.authResponse) { // console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { // console.log('Good to see you, ' + response.name + '.'); }); } else { // console.log('User cancelled login or did not fully authorize.'); } }); } React.useEffect(()=>{ window.fbAsyncInit = function() { window.FB.init({ appId : '0500550055050', xfbml : true, version : 'v11.0' }); 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')); },[]) return( <button onClick={handleClick}>Login</button> ) }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>