ASP.NET C # вызов curl с OAuth не работает - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь сделать этот вызов curl для нового API погоды Yahoo с OAuth 1 следующим образом:

[HttpGet]
public HttpResponseMessage getWeather()
{

    using (HttpClient httpClient = new HttpClient())
    {

        httpClient.BaseAddress = new Uri("http://weather-ydn-yql.media.yahoo.com/");

        httpClient.DefaultRequestHeaders.Accept.Clear();

        httpClient.DefaultRequestHeaders.Add("Authorization", "OAuth oauth_consumer_key = \"(MY CONSUMER KEY)\", oauth_signature_method = \"HMAC-SHA1\", oauth_timestamp = \"1547473450\", oauth_nonce = \"Ll7ArdU1yN0\", oauth_version = \"1.0\", oauth_signature = \"(MY GENERATED SIGNATURE FROM POSTMAN)\"");

        //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", "oauth_consumer_key = \"(MY CONSUMER KEY)\", oauth_signature_method = \"HMAC-SHA1\", oauth_timestamp = \"1547472939\", oauth_nonce = \"vu3HE92s6A3\", oauth_version = \"1.0\", oauth_signature = \"(MY GENERATED SIGNATURE FROM POSTMAN)\"");

        HttpResponseMessage response = httpClient.GetAsync("forecastrss?location=hamilton&format=json").Result;

        return response;
    }
}

Но когда я запускаю это, он возвращает эту ошибку:

Пожалуйста, предоставьте действительные учетные данные. OAuth oauth_problem = "OST_OAUTH_PARAMETER_ABSENT_ERROR", область = "yahooapis.com"

Похоже, что мои параметры OAuth отсутствуют. Мой вопрос, как мне сделать curl в ASP.NET C # с аутентификацией OAuth 1?

1 Ответ

0 голосов
/ 14 января 2019

Разобрался с помощью RestClient

var client = new RestClient("http://weather-ydn-yql.media.yahoo.com/forecastrss?location=hamilton&format=xml");
var request = new RestRequest(Method.GET);
request.AddHeader("Postman-Token", "ac0c256b-e727-4b01-b4fe-edd8b7d7073a");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "OAuth oauth_consumer_key="(MY CONSUMER KEY)",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1547481203",oauth_nonce="304ixaov43G",oauth_version="1.0",oauth_signature="(MY GENERATED SIGNATURE FROM POSTMAN)"");
IRestResponse response = client.Execute(request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...