如何通过Twitter REST API撤销Twitter授予应用程序的用户访问令牌

时间:2017-08-12 09:15:40

标签: node.js oauth oauth-2.0 twitter-oauth

我有一个Node JS应用程序,它使用Twitter API(使用OAuth 1.0a)对用户进行身份验证,并使用提供的用户访问令牌代表用户发布推文。

我还希望为我的应用的用户提供一种方法,以便断开"来自Twitter,通过撤销之前提供的访问令牌,以便用户下次希望通过我的应用程序访问它时必须登录Twitter。

我也有与Facebook类似的整合(通过OAuth 2),通过Facebook的合法方式是通过对/ me / permissions路由的DELETE请求。对于Twitter,我找到了一种方法(在此页面上提到:https://dev.twitter.com/oauth/reference/post/oauth2/invalidate/token)来使访问令牌无效,但它似乎失败了"无法验证您的凭据"错误。我知道我提供了正确的凭据,因为如果我只是使用相同的凭据发布推文,而不是发布到该端点,我能够成功地做到这一点。

有一点需要注意:我发现Twitter不支持OAuth2进行用户身份验证,这就是我将OAuth 1用于Twitter的原因。不确定它是否与此有关。

我的应用尝试撤销令牌的示例代码:

var logout = function(userAccessToken, userAccessTokenSecret, done) {
    oauth.post(
      "https://api.twitter.com/oauth2/invalidate_token",
      userAccessToken, userAccessTokenSecret,
      {"access_token": userAccessToken},
      "application/json",
      function(error, data) {
        console.log("response from Twitter: error = " + JSON.stringify(error) + ", data = " + JSON.stringify(data));
        done(error, data);
      }
    );
}

1 个答案:

答案 0 :(得分:2)

现在看来这是不可能的。您提供的路线仅适用于您可以通过的应用程序标记

https://dev.twitter.com/oauth/reference/post/oauth2/token

根据faq部分,用户可以在他们的设置中撤销令牌。

此外,我在推特社区发现这篇文章的问题基本上和你一样:

https://twittercommunity.com/t/actively-revoking-oauth-access-tokens/1505

  

目前,应用程序无法为已授予应用程序访问权限的用户自愿撤销访问令牌。如果您确定服务处于非活动状态的某段时间,这意味着用户不再使用您的应用程序,那么最好的方法是从您的记录中删除访问令牌。如果用户回来,您可以为他们重新协商。

所以在我看来,最容易删除你身边的令牌。