3

Facebook JavaScript SDK を使用するページ タブにアプリがあります。新しいユーザーがアプリにアクセスすると、予想される「Facebook でログイン」ポップアップが表示されます。また、FB.Login のスコープ パラメーターに追加した拡張アクセス許可もいくつかあります。ユーザーが facebook でログインすると、予想される拡張アクセス許可のポップアップが表示されます。唯一の問題は、ユーザーが拡張アクセス許可をスキップした場合、ダイアログは access_token を返しますが、拡張アクセス許可には無効です。以下のコード例。

window.fbAsyncInit = function () {
    FB.Canvas.setAutoGrow();
    FB.init({
        appId: facebookAppId, 
        status: true, // check login status
    });

    function updateFBInfo(response) {
        console.log('updateResp:');
        if (response.authResponse) {
            //user is already logged in and connected
            FB.api('/me', function (info) {
                displayUserInfo(info, response);
            });
        }
        else {
            FB.login(function (loginResponse) {
                if (loginResponse.authResponse) {
                    FB.api('/me', function (info) {
                        displayUserInfo(info, loginResponse);
                    });
                }
            }, { scope: 'email,manage_pages,offline_access,publish_stream' });
        }
    }

    FB.getLoginStatus(updateFBInfo);
};

私の質問は、何が欠けているのですか (これは簡単なものでなければなりません)、または返された acces_token が実際に有効かどうかを確認する方法はありますか?

4

1 に答える 1

9

続行する前に、アクセス許可を明示的に確認する必要があります。必要なアクセス許可が提供されていない場合はFB.login()、必要なスコープで再度表示する必要があります。

権限を確認するためのコードは次のとおりです。

FB.api('/me/permissions', function (response) {
            var perms = response.data[0];
            // Check for publish_stream permission in this case....
            if (perms.publish_stream) {                
                // User has permission
            } else {                
                // User DOESN'T have permission. Perhaps ask for them again with FB.login?
            }                                            
    } );
于 2012-04-26T16:19:48.243 に答える