我直接在facebook api docs上得到了这个例子,我在firefox和IE10中都得到了Reference Error: FB is not defined
。
我不明白为什么在使用他们的示例代码时没有定义FB?这只是一个安全例外,因为我在本地运行这个或者FB文档代码确实有问题吗?
<!DOCTYPE html>
<html>
<head>
<title>FB Login Test</title>
</head>
<body>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '(my app id)',
xfbml : true,
version : 'v2.1'
});
};
(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'));
function facebookLogin(){
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 + '.');
});
console.log(response);
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
}
</script>
<a href="javascript:facebookLogin();">Login</a>
</body>
</html>
答案 0 :(得分:3)
因为这一行,以及您使用本地页面的事实:
js.src = "//connect.facebook.net/en_US/sdk.js";
当网址不提供协议时,浏览器将使用浏览器当前正在查看的任何协议。由于您是从本地源使用此链接,因此使用的链接将是
file://connect.facebook.net/en_US/sdk.js
如果要从本地源使用它,则需要将协议添加到URL
js.src = "https://connect.facebook.net/en_US/sdk.js";