雅虎API认证后的问题

Problems with Yahoo API after authentication

本文关键字:问题 认证 API 雅虎      更新时间:2023-09-26

我一直在寻找这个问题的答案,但我似乎找不到答案。我已经尝试了几种方法,我将在这里列出,希望有人能给我指出正确的方向。

首先,我使用Hapi框架构建了一个简单的Node应用程序。此外,我正在使用Bell库(也是来自Hapi人员)通过Yahoo和Hapi -auth-cookie进行身份验证,并使用身份验证结果设置会话。据我所知,这个工作得很好。

Bell在用户通过身份验证后,向我提供一个令牌和一个秘密。

标记看起来像这样:

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

点击这个URL的响应是:

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

很明显,我想要点击的URL是不完整的。但是,我不确定所需的参数是什么。我已经访问雅虎文档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并不是最容易使用的东西,但希望有人能在这里有所了解,因为我似乎已经很接近了。我希望我包括你需要的所有信息,谢谢!!

一旦用户通过了正确的身份验证,那么您将拥有"oauth_token"answers"oauth_token_secret",正如您所提到的。

现在,当尝试访问Yahoo API时,您需要根据oauth规范提供"令牌"answers"秘密",以便Yahoo知道您可以访问他们的API。

这就是oauth的工作原理,你可以提供oauth信息作为"授权"头的一部分,或者用url查询参数。

"oauth_token_secret"(与所有其他调用信息)应用于生成"oauth_signature",雅虎将在其结束时验证。在访问他们的api时,"secret"不应该按原样发送。

请注意,oauth信息不仅包括"令牌"answers"签名",还包括"nonce"、"时间戳"、"版本"、"signature_method"等。所有的信息(连同秘密)将被用来生成签名,然后作为他们api调用的一部分传递给雅虎。

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

找到

HTH