2012-11-07 75 views
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?

感谢

回答

0

好了,所以像我想知道为什么这是不工作,我结束了使用Tweetsharp,我有事情在几分钟之内完成。

相关问题