如何在不将用户完全退出Facebook的情况下撤销应用授权?

时间:2011-02-27 00:12:03

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

每当我尝试将用户与使用Facebook JavaScript SDK进行身份验证的网站“断开连接”时,它会完全破坏用户的Facebook会话(例如,如果他们在单独的选项卡上登录到Facebook,那么他们就会要求再次登录)。我有以下客户端代码:

$('#logout').bind('click', function(){

    if(FB.getSession() !== undefined){
        //FB.logout();

        // instead of logging out of facebook, just disconnect them
        FB.api({
            method: 'Auth.revokeAuthorization'
        }, function(response){
            console.log('auth revoke', response);
        });
    }

});


window.fbAsyncInit = function() {

    FB.init({
         appId: MYAPPIDHERE
        ,status: true
        ,cookie: true
        ,xfbml: true
    });

    FB.Event.subscribe('auth.sessionChange', function(response){
        console.log(response);
        location = location.href;
    });

};

(function() {
    var e = document.createElement('script'); 
    e.async = true;
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());

假设jQuery在页面上。 FB.api呼叫是成功的,但似乎比它应该“更强大”。它基本上与调用FB.logout()。

具有相同的效果

我做错了什么,或者我应该提交错误?

谢谢!

1 个答案:

答案 0 :(得分:3)

事实证明,我的实际代码实际上是在调用FB.logout()。糟糕!