我遇到以下代码问题。根据JS,如果response.session
有效,它应该alert("User is logged in!");
。问题是,我非常确定会话是有效的,但它警告“用户未登录!”。我知道会话有效,因为我之前登录过,并在窗口出现时允许应用publish_stream
。我也尝试从我的FB中删除该应用程序,但是当我再次允许它时,它仍会提示“用户未登录!”。我的代码出了什么问题?
<html>
<head>
<title>My Facebook Login Page</title>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '436956019655560',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
};
function fbLogin() {
FB.login(function(response) {
if (response.session) {
console.log("User is connected to the application.");
var accessToken = response.session.access_token;
alert("User is logged in!");
} else {
alert("User is not logged in!");
}
}, {scope:'publish_stream'});
}
</script>
</head>
<body>
<div id="fb-root"></div>
<INPUT TYPE="BUTTON" ONCLICK="fbLogin()" value="login">
</body>
</html>
答案 0 :(得分:5)
我很确定response.session不再存在了。我相信你需要寻找response.authResponse。查看FB.login上的docs:
截至2011年12月13日,JavaScript SDK现在仅支持OAuth 2.0进行身份验证。在JS SDK中启用OAuth 2.0的能力于7月首次推出。所有应用程序都将在2011年10月1日之前进行测试和迁移。通过此更改,请确保您已将response.session替换为response.authResponse。
请尝试检查response.authResponse。此外,尝试将响应对象记录到控制台,并确切了解您要返回的内容。