0
我一直在努力尝试使最后4个小时工作,没有任何工作。我一直在寻找榜样的榜样,但我尝试过的一切都失败了。Twitter API,试图获取我的访问令牌时总是收到错误401
这不是我第一次实施oAuth(我已经成功实现了Google Drive和Dropbox),但是我无法获取用于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?
感谢