0

私のアプリでは、ユーザーに FB に接続してもらい、アプリのアクセス許可を付与します。

Connect ボタンをクリックすると、FB ポップアップが表示され、"Login with facebook" が表示されます。次に、publish_stream、manage_pages、email への許可を付与する必要があります。

私が自分のコードで抱えている問題は、アクセス許可の 1 つ ( manage_pages など) を削除しても、 checkLoginStatus を使用してもユーザーは続行できることです。

では、ユーザーが要求されたアクセス許可を付与したことを確認するにはどうすればよいですか?

<div id="fb-root"></div>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
FB.init({
    appId: '<?=FB_APP_ID?>',
    status: true,
    cookie: true
});

FB.getLoginStatus(checkLoginStatus);

function authUser() {
    FB.login(checkLoginStatus, {scope:'publish_stream, manage_pages, email'});
}

function checkLoginStatus(response) {
    if(response && response.status == 'connected') {
        $('#connbut').hide();
        FB.api('/me', function(user) {
            if (user) {
                  $('#fbuser-name').text(user.name);
                  $('#fbuserpict').attr('src', 'https://graph.facebook.com/' + user.id + '/picture');
                  $('#fbname').val(user.name);
                  $('#fbpict').val('https://graph.facebook.com/' + user.id + '/picture');
            }
        });
    } else {
        // Display the login button
        $('#connbut').show();
    }
}
</script>
4

1 に答える 1

1

私がコードで抱えている問題は、アクセス許可の1つ(manage_pagesなど)が削除された場合でも、checkLoginStatusによってユーザーが続行できることです。

もちろん、FB.getLoginStatus権限については何も述べていないため、そうなります。ユーザーがアプリに接続しているかどうかだけがわかります。

では、ユーザーが要求された権限を付与したことを確認するにはどうすればよいですか?

リクエストすることで、ユーザーが現在アプリに付与している権限について質問できます/me/permissions(または、フィールド展開を使用して特定の権限を要求することもできます)。

しかし、JSを介してクライアント側でそうすることは、何らかの形でキャッシュされているようです。アクセス許可を要求し、欠落しているものがあることを確認し、呼び出しFB.loginて再度要求すると、私の経験から、ユーザーが追加のアクセス許可を与えた場合でも、以前と同じアクセス許可が表示される可能性があります。間の権限。信頼できる情報をリアルタイムで取得する唯一の方法は、サーバー側で取得することだと思われます。

于 2012-12-01T23:51:46.173 に答える