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日の時点で、JavaScriptSDKは認証にOAuth2.0のみをサポートするようになりました。JSSDKでOAuth2.0を有効にする機能は、7月に最初に導入されました。すべてのアプリは、2011年10月1日までテストと移行のために提供されました。この変更に伴い、response.sessionをresponse.authResponseに置き換えたことを確認してください。

代わりにresponse.authResponseを確認してみてください。また、応答オブジェクトをコンソールに記録して、何が返されるかを正確に確認してください。

于 2012-05-23T18:18:54.413 に答える