我在尝试编译使用 Facebook Javascript SDK 的应用程序时偶然发现了一个问题:
[ERROR] ReferenceError: Can't find variable: FB
这是我的设置:
的index.html
...
<script id="microloader" type="text/javascript" src="sdk/microloader/development.js"></script>
<!-- dependencies -->
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'XXXXXXXXXXXXX', // App ID
channelUrl : '//payme.com:3000/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
};
// 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/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
...
Home.js (发现错误的地方)
...
config: {
controls: {
mainView: {
initialize: 'initView'
}
}
},
initView: function() {
var me = this;
FB.getLoginStatus(function(response) {
if(response.status === 'connected') {
...
} else {
...
}
});
},
...
我尝试异步并同步加载Facebook SDK,将脚本标记放在microloader之前和之后,但没有任何效果。
有关如何解决这个问题的想法吗?
答案 0 :(得分:1)
您正在异步加载Facebook JavaScript SDK,并且可能在加载SDK之前调用方法FB.getLoginStatus
。加载SDK后调用方法FB.getLoginStatus
(即在您拥有// Additional initialization code here
的行