2017-08-12 60 views
0

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

我还想为我的应用程序的用户提供一种方式,通过撤销之前提供的访问令牌来“断开”与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); 
     } 
    ); 
} 
+0

我敢肯定,这只适用于持票人令牌,你通过https://dev.twitter.com/oauth/reference/post/oauth2/token –

回答

1

看来,因为这现在是不可能的。您提供的路线只有应用程序仅令牌可以通过

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

得到据FAQ部分令牌可以由用户自己在其设置中撤销。

而且我发现这个职位在Twitter社区,要求基本相同的问题,你做的:

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

目前还没有任何办法对申请自愿撤销访问令牌的用户谁已授予应用程序访问权限。如果您确定服务中的某段时间不活动,意味着用户不再使用您的应用程序,那么您的最佳途径是从记录中删除访问令牌。如果用户再次回来,您可以为他们重新协商。

所以在我看来,最简单的方法就是删除你侧面的标记。