2013-05-21 13 views
7

Sto utilizzando il seguente codice di restituire il portatore simbolico, ma io continuo a ricevereUtilizzando Twitter per ottenere portatore di token

"Il server remoto ha restituito un errore: (500) errore interno del server" on line "risposta 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(); 

Qualsiasi consiglio sarebbe incredibile

risposta

1

In passato ho usato TweetSharp che utilizza 1.1 API di Twitter. Probabilmente starai meglio usando quello per le tue chiamate su Twitter.

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

Se avete bisogno di un esempio o quello che vi serve, me lo faccia sapere.

10

Ho trovato la soluzione dopo aver perso molte ore. Questo errore aumenta a causa della codifica base64 che utilizza Unicode. Basta cambiare UNICODE in UTF8 e nient'altro.

codice finale:

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

questo mi ha aiutato con il mio problema, anche se non sto usando C#/Net.. – the0ther

Problemi correlati