2013-09-24 39 views
5

我試圖用這些指令連接到Twitter - RestSharp的OAuth2

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

這裏連接到Twitter API是我的代碼:

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如下

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

這部分是否錯誤?

request.AddBody("grant_type=client_credentials"); 

我已經驗證我的憑據是正確的(我之前得到了這個錯誤,但解決了它,所以它應該沒問題)。

回答

2

Twitter頁面上的說明讓我困惑。 「請求的主體必須是grant_type = client_credentials。」

至於Restharp,它不是AddBody,而是AddParameter。

所以:

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