2013-05-21 38 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