0

我对以下代码有问题。根据 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>
4

1 回答 1

5

我很确定 response.session 不再存在。我相信您需要寻找 response.authResponse。查看 FB.login 上的文档

自 2011 年 12 月 13 日起,JavaScript SDK 现在仅支持 OAuth 2.0 进行身份验证。在 JS SDK 中启用 OAuth 2.0 的功能于 7 月首次引入。所有应用程序都在 2011 年 10 月 1 日之前进行测试和迁移。通过此更改,请确保您将 response.session 替换为 response.authResponse。

尝试检查 response.authResponse 。另外,尝试将响应对象记录到控制台,看看你得到了什么。

于 2012-05-23T18:18:54.413 回答