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?
感謝