应用程序权限不适用,Auth对话框不反映它们

时间:2012-10-26 12:04:10

标签: facebook-graph-api authentication permissions facebook-javascript-sdk

我有以下问题,请提前感谢有关此问题的任何帮助。

我在Apps > [NAME-OF-THE-APP] > Permissionshttps://developers.facebook.com/apps/[APP-ID]/permissions)中配置我的应用程序,以便在用户首次使用该应用程序时请求“publish_actions”,如下图所示......

http://f.cl.ly/items/0O0V0s3g3Y3z0t1Z2P2p/Screen%20Shot%202012-10-26%20at%208.36.32%20AM.png

问题是Auth Dialog没有反映这种配置,因此不会要求“publish_actions”的许可......

http://f.cl.ly/items/12082g323w182E0U1Y05/Screen%20Shot%202012-10-26%20at%208.36.49%20AM.png

我尝试了不同的“用户和朋友权限”和“扩展权限”,但Auth对话仍然保持不变。

我使用JavaScript SDK,这是代码,我正在尝试在Canvas中访问我的应用。

<script>
window.fbAsyncInit = function() {
    FB.init({appId:'398977410174164',status:true,cookie:true,xfbml:true});

    function testAPI() {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me', function(response) {
            console.log('UserID, ' + FB.getAuthResponse()['userID'] + '.');
            console.log('Access token, ' + FB.getAuthResponse()['accessToken'] + '.');
        });
    }

    function login() {
        FB.login(function(response) {
            if (response.authResponse) {
                testAPI();
            } else {
                // cancelled
            }
        });
    }

    FB.getLoginStatus(function(response) {
        if(response.status === 'connected'){
            var signedRequest = response.authResponse.signedRequest;
        }else if(response.status === 'not_authorized'){
            login();
        }else{
            login();
        }
    });
};

(function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
}(document));
</script>

再次感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

[第x次:]

这些设置仅适用 从应用中心登录。 (并且他们也使用来影响通过Authenticaed Referrals登录,现在已弃用。)

每当您触发登录自己时(正如您使用FB.login调用一样) - 您必须在那里指定权限,然后通过scope参数

答案 1 :(得分:0)

在login()函数中使用此代码:

function login() {
    FB.login(function(response) {
        if (response.authResponse) {
            testAPI();
        } else {
            // cancelled
        }
    }, {scope:'publish_actions'});
}