验证后Yahoo API的问题

时间:2014-08-24 17:06:53

标签: javascript node.js oauth yahoo-api hapijs

我一直在寻找这方面的答案,但我似乎无法找到答案。我尝试了几件事,我将在此列出所有这些内容,希望有人可以指出我正确的方向。

首先,我使用Hapi框架构建了一个简单的Node应用程序。此外,我还使用来自Hapi家伙的Bell库来验证Yahoo和hapi-auth-cookie以使用身份验证结果设置我的会话。据我所知,这是完美的。

贝尔,一旦用户通过身份验证,就会向我提供令牌和秘密。

令牌看起来像这样:

A=vvnxl1_FhCK6FPEFbIA.p_N8cSet7Ifmye.i3mWa6hrlh7fXecZhQvumjKSXPkRGfcj2BaFSmZCWPXeW67G8kqiS4G3Z7yBR

秘密看起来像这样:

9e17917hsjf863c220c35f3f3385b6e4cd586c84

因此,一旦我进行身份验证并重定向到我的主页,我就会拥有这两个,并设置了一个cookie。我的理解是我准备好了。然后我尝试使用以下URL来访问Yahoo API:

https://fantasysports.yahooapis.com/fantasy/v2/leagues;league_keys=328.l.5668/standings?format=json

点击此网址的响应是:

{
"error":
    {
        "lang": "en-US",
        "description": "Please provide valid credentials. OAuth oauth_problem=\"unable_to_determine_oauth_type\", realm=\"yahooapis.com\""
     }
 }

显然,我试图点击的网址不完整。但是,我不确定所需的参数是什么。我曾经1000次访问雅虎文档,但我似乎无法找到这个具体的答案。那里的所有例子主要涉及认证位,我应该这样做。所以,希望我能幸运,我开始尝试在URL中传递令牌和秘密。在这一个我尝试了API URL +令牌+秘密+签名。我使用的令牌和秘密是上面提到的Bell提供的令牌和秘密:

https://fantasysports.yahooapis.com/fantasy/v2/leagues;league_keys=328.l.5668/standings?format=json&&oauth_token=A=tqq2L3D54ATsQZbgHB95b0ZyCj_kgq01R69vTulZ6lP9evhzddrIaksmd6u21fNSPFQ8WtVBsWr9GFk1zQtsw_OP4pKKaDKs2TxHlqwAYp4ZyIkthzPcSnJQka.J2THeK8BHC8eeisT4EeQpMqcDgefX6Hbb1CsQ_bD00ECd3AE.uGdF_6sm&oauth_secret=b5d2359f191cc72cfd318b5cf&oauth_signature=524a4f6e1407acd00a98f53973180%26b5d2359f191cc4c7d7d7bfd318b5cf

现在,它告诉我令牌被拒绝了:

{
    "error": {
        "lang": "en-US",
        "description": "Please provide valid credentials. OAuth oauth_problem=\"token_rejected\", realm=\"yahooapis.com\""
    }
}

我首先尝试了没有签名的情况,在这种情况下,错误告诉我签名丢失了。

这里的任何帮助将不胜感激。从搜索过去的一周开始,我发现雅虎API并不是最容易合作的东西,但希望有人在这里有一些见解,因为我似乎非常接近。我希望我收录了你需要的所有信息,谢谢!!

1 个答案:

答案 0 :(得分:1)

一旦用户通过正确的身份验证,您就会拥有" oauth_token"和你提到的" oauth_token_secret"一样。

现在,在尝试访问Yahoo API时,您需要提供"令牌"和#34;秘密"根据oauth规范,雅虎了解您可以访问他们的API。

这就是oauth的工作原理,你可以提供oauth信息作为"授权"的一部分。标题或查询参数与网址。

" oauth_token_secret" (使用所有其他呼叫信息)应该用于生成" oauth_signature"哪个雅虎将在他们结束时验证。 "秘密"在访问他们的apis时,不应该按原样发送。

请注意,oauth信息不仅仅涉及"令牌"和#34;签名"还有" nonce"," timestamp"," version"," signature_method"等等。所有信息(连同秘密)将用于生成签名,然后将其作为api调用的一部分传递给yahoo。

可以在http://tools.ietf.org/pdf/rfc5849.pdf

找到Oauth文档

HTH