0

しばらくの間、これに対する答えを探していましたが、答えが見つからないようです。私はいくつかのことを試しましたが、そのすべてをここにリストします。うまくいけば、誰かが私を正しい方向に向けることができます.

まず、Hapi フレームワークを使用して単純な Node アプリを作成しました。さらに、同じく Hapi の Bell ライブラリを使用して Yahoo で認証し、hapi-auth-cookie を使用してセッションを認証結果に設定しています。これは、私が知る限り、完全に機能しています。

Bell は、ユーザーが認証されると、トークンとシークレットを提供してくれます。

トークンは次のようになります。

A=vvnxl1_FhCK6FPEFbIA.p_N8cSet7Ifmye.i3mWa6hrlh7fXecZhQvumjKSXPkRGfcj2BaFSmZCWPXeW67G8kqiS4G3Z7yBR

シークレットは次のようになります。

9e17917hsjf863c220c35f3f3385b6e4cd586c84

したがって、認証してホームページにリダイレクトされると、これら 2 つがあり、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 は明らかに不完全です。ただし、必要なパラメーターが何であるかはわかりません。私は Yahoo ドキュメントに 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\""
    }
}

また、最初に署名なしで試してみましたが、その場合、エラーは署名がないことを示しています。

ここで何か助けていただければ幸いです。過去 1 週間の検索から、Yahoo API は最も簡単に操作できるものではないことがわかりました。必要な情報がすべて含まれていることを願っています、ありがとう!!

4

1 に答える 1

1

ユーザーが適切に認証されると、「oauth_token」と「oauth_token_secret」が得られます。これは、前述のとおりです。

ここで、Yahoo API にアクセスしようとしているときに、oauth 仕様に従って「トークン」と「シークレット」を提供する必要があります。これにより、API へのアクセスが許可されていることを Yahoo が理解できるようになります。

これが oauth の仕組みです。「Authorization」ヘッダーの一部として oauth 情報を提供するか、URL を使用してパラメーターを照会できます。

「oauth_token_secret」(他のすべての呼び出し情報を含む) を使用して、yahoo が最後に検証する「oauth_signature」を生成する必要があります。「秘密」は、APIにアクセスしている間、そのまま送信されることは想定されていません。

oauth 情報には、「token」と「signature」だけでなく、「nonce」、「timestamp」、「version」、「signature_method」なども含まれることに注意してください。すべての情報 (シークレットを含む) は、 API呼び出しの一部としてyahooに渡される署名を生成するために使用されます。

Oauth ドキュメントはhttp://tools.ietf.org/pdf/rfc5849.pdfにあります。

HTH

于 2014-08-24T21:26:04.467 に答える