我有一个Facebook页面选项卡应用程序,直到刷新页面后才能正确加载。我一直试图解决这个问题超过一个星期,我的智慧结束了。
以下是代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="https:////connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '***************', // App ID
channelURL : '//www.********.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
});
// Additional initialization code 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>
<script type="text/javascript">
$(document).ready(function(){
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//User Logged In
}
else if (response.status === 'not_authorized') {
//Log User Into App
}
else
{
top.location = "http://www.facebook.com";
}
});
});
</script>
就像我说的那样,如果在alert("Test")
之后立即添加类似FB.getLoginStatus(function(response) {
的内容,则会在第一页加载时弹出,但会在页面刷新后弹出。
有人可以帮助我指出正确的方向吗?
谢谢, 佛瑞德
答案 0 :(得分:2)
首先,您要同步和异步加载SDK。删除同步线。然后你所有的FB相关行应该在window.fbAsyncInit中。在sdk完全加载之前,您无法订阅事件。
答案 1 :(得分:1)
如果您还没有
,可以这样试试FB.getLoginStatus(function(response) {
if (response.authResponse) {
// logged in and connected user, someone you know
} else {
// no user session available, someone you dont know
}
});