2013-09-24 14 views
5

Sto tentando di connettersi alla API di Twitter con queste istruzioniCollegamento a Twitter - RestSharp OAuth2

https://dev.twitter.com/docs/auth/application-only-auth

Ecco il mio codice:

var baseUrl = "http://api.twitter.com/"; 
var client = new RestClient(baseUrl);      
var request = new RestRequest("/oauth2/token", Method.POST); 

var concat = ConfigurationManager.AppSettings["TwitterConsumerKey"] + ":" + 
    ConfigurationManager.AppSettings["TwitterConsumerSecret"]; 

string encodeTo64 = concat.EncodeTo64(); 

request.AddHeader("Authorization", "Basic " + encodeTo64); 
request.AddHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
request.AddBody("grant_type=client_credentials"); 
IRestResponse restResponse = client.Execute(request); 

EncodeTo64

static public string EncodeTo64(this string toEncode) 
    { 
     byte[] toEncodeAsBytes 
       = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode); 
     string returnValue 
       = System.Convert.ToBase64String(toEncodeAsBytes); 
     return returnValue; 
    } 

Response.Content è il seguente

"{\"errors\":[{\"code\":170,\"label\":\"forbidden_missing_parameter\",\"message\":\"Missing required parameter: grant_type\"}]}" 

Questa parte è errata?

request.AddBody("grant_type=client_credentials"); 

Ho verificato che le mie credenziali sono corrette (ho ottenuto che l'errore prima, ma decisi di esso, quindi dovrebbe essere OK).

risposta

2

Le istruzioni sulla pagina Twitter mi hanno confuso. "Il corpo della richiesta deve essere grant_type = client_credentials."

Come per Restsharp, non è AddBody, ma AddParameter.

Quindi:

request.AddParameter("grant_type", "client_credentials"); 
Problemi correlati