Twitter API,在尝试获取访问令牌时始终收到错误401

时间:2012-11-07 17:44:46

标签: twitter oauth unauthorized

在过去的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?

由于

1 个答案:

答案 0 :(得分:0)

好的,因为我想知道为什么这不起作用,我最终使用了Tweetsharp,我在几分钟内完成了任务。