我正在尝试检查用户是否使用我的应用登录,但我收到了
控制台中出现在调用FB.init()之前调用FB.getLoginStatus()。
错误。 setSize
似乎有用(尽管不是完全是1,710高度但绝对是1,500左右)所以我无法理解getLoginStatus()
给出错误的原因。
我还使用appID(在下面删除)进行了双重检查,这绝对是正确的。该脚本位于<script src="file.js" type="text/javascript"></script>
和<body>
div正下方的<div id="fb-root"></div>
。
window.fbAsyncInit = function() {
FB.init({
appId : 'APPID', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
FB.Canvas.setSize({width: 520, height: 1710});
FB.Canvas.setAutoResize(100);
FB.getLoginStatus(function(response) {
if (response.authResponse) {
// logged in and connected user, someone you know
alert("?");
} else {
// no user session available, someone you dont know
alert("asd");
}
});
};
答案 0 :(得分:31)
您需要异步加载api。尝试删除<script src="connect.facebook.net/en_US/all.js"></script>
并将JS更新为:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID', // App ID
channelURL : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
//
// All your canvas and getLogin stuff here
//
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
哦,检查一下documentation!
答案 1 :(得分:26)
如果您没有向FB.init提供appId,也会发生此错误。例如:
FB.init({
appId: ''
, channelUrl: '//domain/channel.html'
, status: true
, cookie: true
});
将导致:
在调用FB.init()之前调用了FB.getLoginStatus()。