在 Twitter 上验证 OAuth 令牌
Posted
技术标签:
【中文标题】在 Twitter 上验证 OAuth 令牌【英文标题】:Verify OAuth Token on Twitter 【发布时间】:2011-09-03 13:26:57 【问题描述】:在用户完成 oauth 进程后,我将来自 Twitter 的 oauth 信息存储在 Flash Cookie 中。 Twitter 表示,只有当 Twitter 或用户撤销应用程序的访问权限时,此令牌才会过期。
我可以打电话给 Twitter 以验证我存储的令牌没有被撤销吗?
【问题讨论】:
【参考方案1】:如果访问令牌过期,所有需要身份验证的 API 方法都将失败。但是验证用户是谁以及访问令牌仍然有效的具体方法是GET account/verify_credentials
【讨论】:
顺便说一句 - 现在是 dev.twitter.com/docs/api/1.1/get/account/verify_credentials,适用于 API 1.1 版【参考方案2】:这个问题可能很老,但这个问题是为谷歌人(比如我自己)准备的。
这是使用 Hammock 对 twitter 的调用:
RestClient rc = new RestClient Method = WebMethod.Get;
RestRequest rr = new RestRequest();
rr.Path = "https://api.twitter.com/1/account/verify_credentials.json";
rc.Credentials = new OAuthCredentials
ConsumerKey = /* put your key here */,
ConsumerSecret = /* put your secret here */,
Token = /* user access token */,
TokenSecret = /* user access secret */,
Type = OAuthType.AccessToken
;
rc.BeginRequest(rr, IsTokenValid);
回复如下:
public void IsTokenValid(RestRequest request, RestResponse response, object userState)
if(response.StatusCode == HttpStatusCode.OK)
var user = userState;
Helper.SaveSetting(Constants.TwitterAccess, user);
else
Dispatcher.BeginInvoke(() => MessageBox.Show("This application is no longer authenticated "))
我总是从 SO 那里借用解决方案,这是我第一次尝试回馈,尽管这个问题已经很晚了。
【讨论】:
【参考方案3】:手动调试时:
curl \
--insecure https://api.twitter.com/1/account/verify_credentials.json?oauth_access_token=YOUR_TOKEN
【讨论】:
第 1 版 twitter api 不再有效。您需要使用需要 oauth 流程的 1.1 api,因此您不能再只传递令牌。 我们现在如何使用 1.1 来做到这一点?应该在标头中传递访问令牌和访问秘密吗?钥匙是什么?【参考方案4】:我正在使用TwitterOAuth API,这是基于接受的答案的代码。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $twitter_oauth_token, $twitter_oauth_secret);
$content = $connection->get("account/verify_credentials");
if($connection->getLastHttpCode() == 200):
// Connection works fine.
else:
// Not working
endif;
【讨论】:
以上是关于在 Twitter 上验证 OAuth 令牌的主要内容,如果未能解决你的问题,请参考以下文章
通过 ServiceStack api 使用 Linq2Twitter 和缓存的 OAuth 令牌
TwitteR、ROAuth 和 Windows:注册成功,但证书验证失败
将Zend_Service_Twitter_Search与经过身份验证的请求一起使用
Node.js 护照 OAuth 2.0 身份验证:存储访问和刷新令牌的位置