FB.logout() 调用时没有访问令牌错误

Posted

技术标签:

【中文标题】FB.logout() 调用时没有访问令牌错误【英文标题】:FB.logout() called without an access token error 【发布时间】:2012-01-23 08:38:53 【问题描述】:

我已将我的 js FB Connect 升级到 oauth 版本,当我尝试使用 FB.logout() 方法以编程方式从 FB 注销时,出现类似

的错误

“在没有访问令牌的情况下调用 FB.logout()”

这背后的问题是什么?我在这里看到了一个thread,但它对我不起作用。如果有人找到解决方案,请帮助我。谢谢。

【问题讨论】:

我遇到了同样的问题。允许用户连接。如果没有发生页面刷新,用户可以使用 FB.logout 注销,并且它可以正常工作。但是,页面重新加载一次后,FB.logout 会触发控制台警告:“FB.logout() called without a access token” 【参考方案1】:

这是我以前用过的。

//check if logout is 
FB.getLoginStatus(function(ret) 
    /// are they currently logged into Facebook?
    if(ret.authResponse) 
        //they were authed so do the logout
        FB.logout(function(response) 
           //do your stuff here.
        );
     else 
       ///do something if they aren't logged in
       //or just get rid of this if you don't need to do something if they weren't logged in
    
);

【讨论】:

好一个!注销后如何/在哪里添加重定向?试图添加 FB.logout(function(response) ... 但在这种情况下我没有注销。你能帮忙吗? 文档中并不清楚,但是您需要调用 FB.login 之类的东西作为其他函数的回调。这个是getLoginStatus。在文档中显示它只是被自己调用的。【参考方案2】:

我遇到了这个问题并解决了。

当用户已经注销并且我再次尝试使用 fb.logout() 方法时,这发生在我身上。它似乎在以下代码中:

FB.logout(function(response)
  
     console.log(response.status);
  
);

response.status 会说“已连接”,即使用户已注销,由于某些缓存问题或其他错误。因此最好使用authResponse 来确定用户是否登录。即:

FB.logout(function(response)
  
     if (! response.authResponse)
       //disable logout button
  
);

【讨论】:

是的,这是对我有用的正确方法,尽管稍作修改,但想法是一样的。我投了赞成票。谢谢 这并不能解决facebook抱怨缺少访问令牌的问题

以上是关于FB.logout() 调用时没有访问令牌错误的主要内容,如果未能解决你的问题,请参考以下文章

Fb.Logout 功能不会注销用户

iOS:通过自动登录获取 Facebook 访问令牌

使用 Angular 和 JWT 令牌持续登录

使用 zuul 网关时,授权服务没有使用访问令牌响应

尝试访问我的 api 平台时未找到 JWT 令牌 401 错误?

何时将刷新令牌传递给 API