FB.logout()在没有访问令牌的情况下调用。 javascript sdk

时间:2013-11-07 17:27:51

标签: facebook facebook-javascript-sdk facebook-login

完全失去了这个,docs并没有真正对此有所了解......

使用此登录按钮代码在我的应用中使用Facebook Javascript SDK:

<fb:login-button scope="manage_pages,read_insights,ads_management" autologoutlink="true" size="large"></fb:login-button>

根据文档,autologoutlink=true param会在用户登录后将login按钮转换为log out我想保留此功能而不是编写我自己的按钮代码

此事件调用FB.logout但仍返回回调中的错误消息

FB.Event.subscribe('auth.logout', function(response) {                                              
    FB.logout(function(response) {
        // FB.logout() called without an access token.
    });
});

我想使用Facebook登录窗口小部件而不是我自己的登录按钮,因此对同一主题的其他答案没有帮助。我不明白我应该如何通过access_token来证明我有权注销...

2 个答案:

答案 0 :(得分:30)

显然这是不可能的,至少我无法弄明白。快速解决方案是从自定义Log Out按钮调用此函数:

function fbLogoutUser() {
    FB.getLoginStatus(function(response) {
        if (response && response.status === 'connected') {
            FB.logout(function(response) {
                document.location.reload();
            });
        }
    });
}

页面重新加载向Facebook发出另一个请求,然后查看未授权状态并从浏览器中删除cookie,这反过来使access_token无效。因此,这将从网站和Facebook中注销用户。

答案 1 :(得分:-1)

试试这个:

function fbLogoutUser() {
FB.getLoginStatus(function(response) {
    if (response && response.status === 'connected') {

        FB.logout(function(response) {
            document.location.reload();
        });
    } else if (response.status === 'not_authorized') 
        {
             FB.logout(function(response) {
            document.location.reload();
            });
        }
});}