卷曲呼叫雅虎天气新 api OAuth

Curl call yahoo weather new api OAuth

我正在尝试对新的雅虎天气进行 curl 调用 API

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

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

我得到了我的 API 密钥,我的应用程序已被批准或列入白名单。

但是我似乎无法让我的 curl 调用与 OAuth 身份验证一起使用。我首先尝试使用 Postman 拨打电话,我获得了授权,但结果是空的。根据支持“在邮递员中使用 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>

这是来自雅虎天气开发者页面:

GET /forecastrss?location=sunnyvale,ca HTTP/1.1 Host: weather-ydn-yql.media.yahoo.com Yahoo-App-Id: YOUR_APP_ID Authorization: OAuth 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" cache-control: no-cache

我做错了什么?这太令人沮丧了。

这是 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'

documentation 中所述。

YOUR_CONSUMER_KEY:您的用户密钥
YOUR_TIMESTAMP:Unix 时间戳
YOUR_NONCE : 公告
YOUR_GENERATED_SIGNATURE : 加密后的签名。

以下是使用 Postman (as you mentioned using it in the description) to generate a GET request to the Yahoo Weather API 的步骤。

1) Postman 配置:

2) 生成curl命令
然后,为了发出 curl 请求,您可以按代码按钮并查看生成的命令。

Java、PHP 和 NodeJS on this page.

中有一些代码示例