2

<context>私は昨日イライラして、すぐに (そして適切に) クローズされ、仲間の SO コホートによって削除された炎の質問を投稿しました。ヤフー!標準の PlaceFinder API エンドポイントをオフにして、有料サービスに置き換えました。それは私を苛立たせた部分ではありませんが、OAuth を要求するようにアクセス モデルを変更したという事実がほとんどでした。私の質問のクローザーの1人は、次のようなコメントをしました。

依存している API の非推奨に注意を払っていませんでした。OAuth はユーザーにとってより優れています。

昨年の 10 月または 11 月に API の廃止を最初に発表したときに Yahoo がリンク切れを起こしたことを再び非難することで、API ウォッチングの事実を主張することはできますが、これをインテリジェントな質問。</context>

OAuth を使用しました。私は OAuth が好きです。ユーザーを認証してアプリケーションへのサインオンを簡素化できるだけでなく、他のアプリからそのユーザーのデータにアクセスするための承認を求めることができます。ただし、PlaceFinder データはプライベート ユーザー データではありません。これは、既知の地名とグローバル識別子 (WOE ID) のためのもので、誰でも共有できます。

今朝、Yahoo! BOSS GEO でクレジット カード情報を取得し、OAuth API コンシューマーをテストするためにスパイクを開始しました。過去に使用したDotNetOpenAuthから始めました。Yahoo! のOAuth ガイドを読み、Yahoo! のDotNetOpenAuth.OAuth.ServiceProviderDescriptionOAuth 6.1、6.2、および 6.3 エンドポイント URL をすべて使用してインスタンスを作成しました。DotNetOpenAuth.OAuth.WebConsumer次に、PlaceFinder APIを使用して Yahoo! に寄付を開始する方法を見つけようと試みました。

しかし、うまくいきませんでした。多くの認知的不協和を克服する必要があり、最終的には、人気があり広く使用されているDotNetOpenAuthライブラリ自体の制限か、OAuth の誤用の可能性がありました。BOSS のドキュメントがBOSS GEO のドキュメントとは別のものであることにようやく気付き、Yahoo! の PlaceFinder API を使用するために機能する C# コード サンプルを見つけたとき、その不協和音のすべてがどこから来ているのかを発見しました。

Yahoo! の PlaceFinder API は、OAuth を使用していますが、API のエンドポイントまたはデータを取得するためにアクセス トークンを必要としません。PlaceFinder リクエストを送信すると、アプリのすべての情報 (コンシューマー キーとシークレット) が、タイムスタンプ、ナンス、署名と共に PlaceFinder エンドポイント自体に送信されます。以前 OAuth を使用したときは、これらの要素を 6.1 エンドポイントに送信してリクエスト トークンを取得していました。次に、それを使用してユーザーを認証/承認し (6.2)、アクセス トークン (6.3) を取得して、さらに要求を行うことができます。

これがDotNetOpenAuthの制限であり、これまで克服できなかったので、無知で間違っている場合は教えてください。Yahoo! のサイトのサンプル C# コードでは、DotNetOpenAuth を使用していません。代わりにOAuthBase、ナンス、タイムスタンプ、および署名を生成するために使用できるクラスがあります。ただし、アクセス トークンとシークレットには空の文字列を送信します。DotNetOpenAuth でこれを実行しようとしましたが、null または空のアクセス トークンを使用してリクエストを作成することはできません。

質問: これは OAuth 標準の不適切な使用ですか? そうでない場合、DotNetOpenAuth ライブラリには、RequestToken (6.1) 以外のエンドポイントに無許可の要求を送信することを不可能にする制限がありますか? これらの両方に対する答えが「いいえ」の場合、DotNetOpenAuth を使用して、アクセス トークンやシークレットを送信せずに PlaceFinder データを要求するにはどうすればよいでしょうか?

4

2 に答える 2

0

これは素晴らしい質問です。oAuth は BOSS 開発者に 2 つのメリットをもたらすと思います

  1. 一度 BOSS にサインアップすると、そのキーを複数のサービスに使用できるため、BOSS チームは、将来トークンを必要とするより多くのサービスを提供できるように柔軟性を持たせたいと考えました。最初から oAuth を使用することで、その柔軟性が可能になりました。

  2. チームは、ネットワーク通信中にキーが傍受されないようにしたいと考えていました。リクエストは署名され、実際のキーは渡されないため、スニッフィングが発生しないことを保証できます。

DotNetOpenAuth に関するご質問については、BOSS Y! グループ ( http://tech.groups.yahoo.com/group/ysearchboss/ ) には、C# や VB.Net で書いた人がたくさんいて、アドバイスをくれます。実際、VB.Net oAuth ライブラリ ( http://oauth.googlecode.com/svn/code/vbnet/oAuth.vb ) に問題があることはよく知られています。

于 2013-04-04T00:57:09.933 に答える
0

yahoo が使用する oAth には 2 種類あります。鍵が必要な人もいれば、必要ない人もいます。おそらく、一般的な API 用ではないものが必要です。安全なプロトコル http:// -> https:// を追加し、/public/ を古い URL の適切な場所に配置するだけです。

https://somePartOfURL/public/otherPartOfURL

于 2016-03-22T15:04:17.850 に答える