FB.Login response.session无法正常工作?

时间:2012-05-23 16:37:35

标签: javascript facebook api

我遇到以下代码问题。根据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>

1 个答案:

答案 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。此外,尝试将响应对象记录到控制台,并确切了解您要返回的内容。

相关问题