卷曲呼叫雅虎天气新 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="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"</yahoo:description><yahoo:detail>Please provide valid credentials. OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"</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.
中有一些代码示例
我正在尝试对新的雅虎天气进行 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="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"</yahoo:description><yahoo:detail>Please provide valid credentials. OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"</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.
中有一些代码示例