2013-05-21 25 views
7

Tôi đang sử dụng đoạn mã sau để trả lại người mang thẻ nhưng tôi tiếp tục nhận đượcSử dụng twitter để có được người mang thẻ

"Các máy chủ từ xa trở về một lỗi: (500) Lỗi máy chủ nội bộ" trên dòng "phản ứng WebResponse = 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(); 

Bất kỳ lời khuyên sẽ là tuyệt vời

Trả lời

1

Trong quá khứ tôi đã sử dụng TweetSharp sử dụng 1.1 API của Twitter. Bạn có lẽ nên sử dụng tốt hơn cho các cuộc gọi twitter của bạn.

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

Nếu bạn cần một ví dụ hoặc những gì bạn cần, cho tôi biết.

10

Tôi đã tìm ra giải pháp sau khi lãng phí nhiều giờ. Lỗi này sẽ tăng vì mã hóa base64 sử dụng Unicode. Chỉ cần thay đổi UNICODE thành UTF8 và không có gì khác.

mã cuối cùng:

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

này đã giúp tôi ra với vấn đề của tôi, mặc dù tôi không sử dụng C#/Net.. – the0ther