5

これらの手順で Twitter API に接続しようとしています

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

これが私のコードです:

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");

資格情報が正しいことを確認しました (以前にそのエラーが発生しましたが、解決したので、問題ないはずです)。

4

1 に答える 1

2

Twitterページの指示は私を混乱させました。「リクエストの本文は、grant_type=client_credentials である必要があります。」

Restsharpに関しては、AddBodyではなく、AddParameterです。

そう:

request.AddParameter("grant_type", "client_credentials");
于 2013-09-24T11:17:51.817 に答える