2013-05-21 34 views
7

我用下面的代碼返回承載令牌,但我不斷收到利用Twitter讓承載令牌

「(500)內部服務器錯誤遠程服務器返回錯誤」 = request.GetResponse();「

WebRequest request = WebRequest.Create("https://api.twitter.com/oauth2/token"); 

    string consumerKey = "31111111111111111111"; 
    string consumerSecret = "1111111111111111111111A"; 
    string consumerKeyAndSecret = String.Format("{0}:{1}", consumerKey, consumerSecret); 

    request.Method = "POST"; 
    request.Headers.Add("Authorization", String.Format("Basic {0}", Convert.ToBase64String(Encoding.Unicode.GetBytes(consumerKeyAndSecret)))); 

    request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; 

    string postData = "grant_type=client_credentials"; 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
    request.ContentLength = byteArray.Length; 
    Stream dataStream = request.GetRequestStream(); 
    dataStream.Write(byteArray, 0, byteArray.Length); 
    dataStream.Close(); 

    WebResponse response = request.GetResponse(); 

任何建議將是驚人的

回答

1

在我使用TweetSharp過去使用Twitter的API 1.1。你可能會更好地使用你的Twitter電話。

TweetSharp Github上:https://github.com/danielcrenna/tweetsharp

如果您需要一個例子,或者你需要什麼,讓我知道。

10

我在浪費了很多小時後發現瞭解決方案。 由於使用Unicode的base64編碼,此錯誤將會上升。只需將UNICODE更改爲UTF8,而不是其他任何東西。

最終代碼:

WebRequest request = WebRequest.Create("https://api.twitter.com/oauth2/token"); 

string consumerKey = "31111111111111111111"; 
string consumerSecret = "1111111111111111111111A"; 
string consumerKeyAndSecret = String.Format("{0}:{1}", consumerKey, consumerSecret); 

request.Method = "POST"; 
request.Headers.Add("Authorization", String.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(consumerKeyAndSecret)))); 

request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; 

string postData = "grant_type=client_credentials"; 
byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
request.ContentLength = byteArray.Length; 
Stream dataStream = request.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 

WebResponse response = request.GetResponse(); 
+1

幫我與我的問題,雖然我不是用C#/。NET。 – the0ther