Curl вызов Yahoo погода новый API OAuth - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь вызвать вызов API погоды Yahoo

https://developer.yahoo.com/weather/

https://developer.yahoo.com/weather/documentation.html

Я получил свои ключи API, и мое приложение было одобрено или занесено в белый список.

Однако я не могу заставить свой вызов curl работать с аутентификацией OAuth. Сначала я попытался позвонить Почтальону, я был авторизован, но результаты оказались пустыми. Согласно поддержке «Использование oauth1 в почтальоне может привести к прерывистой ошибке.»

Итак, я пытаюсь сделать вызов curl следующим образом:

curl --request GET --url 'https://weather-ydn-yql.media.yahoo.com/forecastrss?location=sunnyvale,ca' --header 'Authorization: OAuth oauth_consumer_key="(MY CLIENT ID)",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1547215497",oauth_nonce="kIDevCJSTBi",oauth_version="1.0",oauth_signature="(MY GENERATED OAUTH SIGNATURE)"' --header 'Yahoo-App-Id: "(MY APP ID)"'

Но я вернул это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><yahoo:error xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" xml:lang="en-US" yahoo:uri="http://yahoo.com"><yahoo:description>Please provide valid credentials. OAuth oauth_problem=&quot;OST_OAUTH_SIGNATURE_INVALID_ERROR&quot;, realm=&quot;yahooapis.com&quot;</yahoo:description><yahoo:detail>Please provide valid credentials. OAuth oauth_problem=&quot;OST_OAUTH_SIGNATURE_INVALID_ERROR&quot;, realm=&quot;yahooapis.com&quot;</yahoo:detail></yahoo:error>

Это со страницы Yahoo Weather Developer:

GET / forecastrss? Location = sunnyvale, приблизительно HTTP / 1.1 Хост: weather-ydn-yql.media.yahoo.com Yahoo-App-Id: YOUR_APP_ID Авторизация: OAuth oauth_consumer_key = "YOUR_CONSUMER_KEY", oauth_signature_method = "HMAC-SHA1", oauth_timestamp = "YOUR_TIMESTAMP", oauth_nonce = "YOUR_NONCE", oauth_version = "1.0", кэш-контроль * -URATE = YOUR_OURE = YOUR_OURE = YOUR_OURE: oAUT_OUT_

Что я делаю не так? Это так расстраивает.

1 Ответ

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

Вот пример запроса curl:

curl 'https://weather-ydn-yql.media.yahoo.com/forecastrss?location=sunnyvale,ca&format=json&oauth_consumer_key=YOUR_CONSUMER_KEY&oauth_signature_method=HMAC-SHA1&oauth_timestamp=YOUR_TIMESTAMP&oauth_nonce=YOUR_NONCE&oauth_version=1.0&oauth_signature=YOUR_GENERATED_SIGNATURE'

Как объяснено в документации .

YOUR_CONSUMER_KEY: ваш потребительский ключ
YOUR_TIMESTAMP: метка времени Unix
YOUR_NONCE: существительное
YOUR_GENERATED_SIGNATURE: зашифрованная подпись.

Вот шаги с помощью Почтальон (как вы упомянули, используя его в описании) для генерации GET-запроса к Yahoo Weather API .

1) Почтальон конфигурация: Postman configuration

2) Сгенерировать команду curl
Затем, чтобы сделать запрос скручивания, вы можете нажать кнопку кода и увидеть сгенерированную команду. Generated curl command

На этой странице есть несколько примеров кода на Java, PHP и NodeJS .

...