【发布时间】:2011-09-03 13:26:57
【问题描述】:
在用户完成 oauth 进程后,我将来自 Twitter 的 oauth 信息存储在 Flash Cookie 中。 Twitter 表示,只有当 Twitter 或用户撤销应用程序的访问权限时,此令牌才会过期。
我可以打电话给 Twitter 以验证我存储的令牌没有被撤销吗?
【问题讨论】:
标签: twitter oauth verification
在用户完成 oauth 进程后,我将来自 Twitter 的 oauth 信息存储在 Flash Cookie 中。 Twitter 表示,只有当 Twitter 或用户撤销应用程序的访问权限时,此令牌才会过期。
我可以打电话给 Twitter 以验证我存储的令牌没有被撤销吗?
【问题讨论】:
标签: twitter oauth verification
如果访问令牌过期,所有需要身份验证的 API 方法都将失败。但是验证用户是谁以及访问令牌仍然有效的具体方法是GET account/verify_credentials
【讨论】:
这个问题可能很老,但这个问题是为谷歌人(比如我自己)准备的。
这是使用 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 那里借用解决方案,这是我第一次尝试回馈,尽管这个问题已经很晚了。
【讨论】:
手动调试时:
curl \
--insecure https://api.twitter.com/1/account/verify_credentials.json?oauth_access_token=YOUR_TOKEN
【讨论】:
我正在使用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;
【讨论】: