Yahoo Fantasy Sports API时间戳错误

时间:2018-01-01 16:34:17

标签: javascript node.js yahoo

我正在尝试在Nodejs中复制这个PHP脚本,可以在这里找到。我正在使用"完整OAuth流程,没有图书馆"脚本

https://developer.yahoo.com/fantasysports/guide/GettingStarted.html

我能够获取我的请求令牌并使用它来获取访问令牌而没有任何问题。但是,当我使用我的Nodejs脚本对API进行实际调用时,我收到错误代码401,其中包含消息" Unauthorized"。当我运行PHP脚本时,我从返回的内容

中获取XML

返回代码:401 内容:

<yahoo:error xmlns:yahoo='http://yahooapis.com/v1/base.rng'
xml:lang='en-US'>
<yahoo:description>Please provide valid credentials. OAuth oauth_problem="timestamp_refused", realm="yahooapis.com"</yahoo:description>
</yahoo:error>

我假设我自己的Nodejs脚本与时间戳有同样的问题,但我无法证明它。

这是我的Nodejs代码:

var accessToken = accessTokenData["oauth_token"];
var accessTokenSecret = accessTokenData["oauth_token_secret"];

// 4. Make request using access token
var protocol = "https:"
var baseUrl = "fantasysports.yahooapis.com";
var requestUri = "/fantasy/v2/game/nfl";
var requestUrl = protocol + "//" + baseUrl + requestUri;

console.log("Making request for " + requestUrl + " ...\n");

makeRequest(
consumerKey,
consumerSecret,
accessToken,
accessTokenSecret,
protocol,
baseUrl,
requestUri
)

//In makeSignedRequest
paramString += "&oauth_signature=" + encodeURIComponent(signature);
var finalPath = path + "?" + paramString

 return new Promise(function(resolve, reject) {
        var data = {
           "error_str": "",
           "errno": 0,
           "return_code": 0,
           "contents": ""
        }

        var options = {
            "protocol": protocol,
            "host": host,
            "path": finalPath,
            "timeout": 2
        };

        console.log("options: " + JSON.stringify(options, null, 2));

        https.get(options, (res) => {
    //....

还有其他人使用过这个基本的入门脚本吗?时间戳是绝对的,因为它是基于1970年新世纪的格林威治时间。

更新

我的服务器时钟错了。我更新了时钟,现在运行PHP脚本时出现以下错误:

返回代码:500 内容:

<?xml version='1.0' encoding='UTF-8'?>
<yahoo:error xmlns:yahoo='http://yahooapis.com/v1/base.rng'
  xml:lang='en-US'>
  <yahoo:description>Internal server error</yahoo:description>
</yahoo:error>

我在笔记本电脑上本地运行脚本时也遇到此错误。也许服务暂时停止了?

但是,我仍然在我的Nodejs中收到401 Unauthorized错误,这意味着脚本之间存在不同之处。一旦我可以让这个PHP脚本返回有效的有效负载,我将开始修复我的节点以匹配它。

0 个答案:

没有答案