在我的一个应用程序中,我使用客户端Facebook javascript api来跟踪用户的Facebook登录状态。
我已经让用户已经与Facebook应用程序连接,并且用户已登录到facebook。
现在当我调用FB.getSession()时,它返回null,在调用FB.getLoginStatus()时也没有给我response.session ....
这种行为在不同的浏览器中有所不同,它在chrome中运行良好但在firefox 4中运行不正常。我清除了Firefox中的cookie仍然没有按预期工作。
此客户端api是否受信任,或者我应该选择服务器端API?
码
window.fbAsyncInit = function() {
FB.init({
appId: '0000000000',
status: true,
cookie: true,
xfbml: true
});
FB.getLoginStatus(function(response) {
if (response.session) {
// This block should have been called.
alert('logged in')
} else {
// no user session available, someone you dont know
alert('not logged in')
}
}, true);
var session = FB.getSession(); //Must not return null...
};
有什么想法吗?
答案 0 :(得分:0)
使用非异步方法后,它工作正常。
<强>代码强>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : '00000000000',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
$(function(){
//var session = FB.getSession();
alert(FB.getSession());
})
</script>
不知道为什么它不能用异步方法。
答案 1 :(得分:0)
这只是因为FB.getSession()没有初始化。
您无法向FB.getLoginStatus添加事件,该事件会在初始化Facebook时触发FB.getSession()功能,从而使用异步方法。