在过去的4个小时里,我一直在努力让它发挥作用,但没有任何方法可行。我一直在寻找高低的例子,但我尝试的一切都失败了。
这不是我第一次实施oAuth(我已成功将其用于Google Drive和Dropbox),但我无法将Access Token用于Twitter API。
我可以成功获取请求令牌(和秘密)并将用户重定向到Twitter网站。一旦用户授权我的应用程序,我的回调网址就会被点击,我会检索验证程序。
现在我应该发送验证者并将其交换为访问令牌(和秘密)。
但是,我这样做的请求总是返回401 Unauthorized错误。我尝试了很多东西,我不知道还有什么可尝试的。请求的代码如下:
Uri uri = new Uri("https://api.twitter.com/oauth/access_token");
OAuth.OAuthBase oAuth = new OAuth.OAuthBase();
String nonce = oAuth.GenerateNonce();
String timestamp = oAuth.GenerateTimeStamp();
String parameters = "";
String normalizedUrl = "";
String signature = oAuth.GenerateSignature(uri, _consumerKey, _ConsumerSecret, requestToken, requestTokenSecret, "POST", timestamp, nonce, OAuth.OAuthBase.SignatureTypes.HMACSHA1, out normalizedUrl, out parameters);
StringBuilder authHeader = new StringBuilder();
authHeader.AppendFormat("oauth_token=\"{0}\", ", requestToken);
authHeader.AppendFormat("oauth_consumer_key=\"{0}\", ", _consumerKey);
authHeader.AppendFormat("oauth_nonce=\"{0}\", ", nonce);
authHeader.AppendFormat("oauth_timestamp=\"{0}\", ", timestamp);
authHeader.AppendFormat("oauth_signature_method=\"{0}\", ", "HMAC-SHA1");
authHeader.AppendFormat("oauth_version=\"{0}\", ", "1.0");
authHeader.AppendFormat("oauth_signature=\"{0}\"", Uri.EscapeDataString(signature));
ServicePointManager.Expect100Continue = false;
WebRequest request = HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Authorization", "OAuth " + authHeader.ToString());
using (StreamWriter sw = new StreamWriter(request.GetRequestStream()))
{
sw.WriteLine("oauth_verifier=" + verifier);
}
WebResponse response = request.GetResponse();
requestToken和requestTokenSecret是我在第一次请求后收到的令牌。
生成签名的oAuth助手类工作正常,我已经成功使用了一段时间。
该请求有什么问题,它总是给我一个401?
由于
答案 0 :(得分:0)
好的,因为我想知道为什么这不起作用,我最终使用了Tweetsharp,我在几分钟内完成了任务。