Facebook API - javascript sdk:登出后状态显示“已连接”

时间:2017-09-19 08:24:27

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

我在AngularJS网站上使用Facebook sdk for javascript。

我正在尝试使用Facebook登录信息填写注册表单。在第一次,facebook模式出现,我输入我的信息,它登录,我得到我需要的数据,如预期的那样。

然后我完成注册,登录系统。并注销系统,同时还执行Facebook注销。

然后我回去创建第二次注册,希望用不同的Facebook帐户测试注册...

但是当我点击Facebook登录以预先填写表格时,我没有再次显示Facebook登录模式以输入新的登录信息,而是使用我以前的数据登录。

当我去检查原因时,我发现facebook状态显示为“已连接”。因为我已经成功执行了facebook注销,所以我期待断开连接。

我错了这个假设吗? 如何在第二次注册时断开第一位用户以使用其他Facebook帐户?

要登录,我正在使用:

var deferred = $q.defer();
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        console.log('already logged in.');
        deferred.resolve(response);
    }
    else {                    
        FB.login( function(response) {
            if (response.authResponse) {
                console.log('response: ' + JSON.stringify(response));
                var access_token = response.authResponse.accessToken;
                console.log('access token: ' + access_token);    
                console.log('Welcome!  Fetching your information.... ');
                deferred.resolve(response);                            
            } else {
                console.log('User cancelled login or did not authorize.');
                deferred.reject('Error occured');
            }
        }, {
            scope: 'public_profile, email, user_birthday',
            return_scopes: true
        });
    }                        
});    
return deferred.promise;

我的退出就像:

var deferred = $q.defer(); 
FB.logout(function(response) {  

    // I've tried with and without this line of code: 
    FB.Auth.setAuthResponse(null, 'unknown');           

    console.log('FB service logged out');
    deferred.resolve(response);
});
return deferred.promise; 

从此引用Facebook JS SDK FB.logout() doesn't terminate user session我在注销后尝试使用FB.Auth.setAuthResponse(null, 'unknown');,但它对我不起作用。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,并通过在用户配置文件中有一个Facebook断开连接按钮来调用该API来解决了这个问题:

DELETE /{user-id}/permissions/

https://developers.facebook.com/docs/graph-api/reference/user/permissions/

例如使用Javascript SDK:

// remove permission, so that the user is asked to authenticate the app again
// or another user can login on the top right of the login popup

FB.api('/me/permissions', 'delete', {
  access_token: user.accessToken            // use existing token from database
  }, (r) => {
   if(r.success) user.accessToken = null;   // remove token in database
});