2013-09-24 10 views
5

Ja próbuje połączyć się z API Twittera z tymi instrukcjamiŁączenie Twitter - RestSharp OAuth2

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

Oto mój kod:

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 jest następujący

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

Czy ta część jest niepoprawna?

request.AddBody("grant_type=client_credentials"); 

I sprawdzeniu, że moje dane są prawidłowe (mam ten błąd wcześniej, ale rozwiązać go, więc powinno być OK).

Odpowiedz

2

Instrukcje na stronie na Twitterze wprawiły mnie w zakłopotanie. "Treścią żądania musi być grant_type = client_credentials."

Jeśli chodzi o Restsharp, to nie jest AddBody, ale AddParameter.

Więc:

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