2013-09-24 60 views
5

Tôi đang cố gắng để kết nối với các API Twitter với các hướng dẫnkết nối với Twitter - RestSharp OAuth2

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

Đây là mã của tôi:

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 là

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

Phần này có sai không?

request.AddBody("grant_type=client_credentials"); 

Tôi đã xác minh rằng thông tin xác thực của tôi là chính xác (tôi đã nhận được lỗi đó trước đó, nhưng đã giải quyết nó, vì vậy sẽ không sao).

Trả lời

2

Hướng dẫn trên trang Twitter làm tôi bối rối. "Phần thân của yêu cầu phải là grant_type = client_credentials."

Đối với Restsharp, nó không phải là AddBody, nhưng AddParameter.

Vì vậy:

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