5

この問題には明らかな解決策が必要であることを知っていますが、それを見逃しているので、車輪を回転させないように誰かが私を啓発してくれることを非常に感謝しています...

サービス API (具体的には Evernote) と対話する ASP.Net アプリケーションを作成しています。Evernote ではセキュリティのために OAuth が必要であり、実際にオブジェクトを操作する前にトークンを取得する必要があります。

ワークフローは次のようになります (他の人と同じように自分自身に説明します!):

  1. 開発 API キーと秘密鍵、およびその他の OAuth 要素を使用して URL を作成し、それを Evernote に送信してアクセス トークンを要求します。
  2. URL をリクエストとして Evernote に送信し、レスポンスから新しいアクセス トークンを取得します。
  3. アクセス トークンを使用して別の URL を作成し、ユーザーの認証トークンを要求します。この URL は、ユーザーがログインするために対話する必要があるページに移動し (まだログインしていない場合)、アプリケーションが自分のアカウントにアクセスすることを承認します。私が作成した URL の最後のパラメーターは、Evernote のサーバーから呼び出されるコールバック URL です。
  4. すべてがうまくいけば、Evernote はコールバック URL を要求し、新しい認証トークンをパラメーターとして含めます。
  5. サーバーがトークンが埋め込まれたコールバックを受信したら、それを使用して、アプリが後続のリクエストでユーザーのメモとやり取りできるようにします。

問題は、パブリック ドメインの ISP ではなく、ローカル ボックスでこのアプリを作成していることです。したがって、私のコールバックは localhost サーバーに対するものです。もちろん、localhost は相対的なので、Evernote はコールバックを解決できません...認証トークンの受信とデバッグを同時に行うことはできません。

この認証モデルは Evernote に固有のものではないため、この問題を回避する方法が必要です (ロングショットで... Flickr は他の多くのサービスと同様に使用しています)。認証トークンを取得し、ローカル ボックスでデバッグできるように設定する方法を教えてもらえますか?

助けていただければ幸いです。

4

2 に答える 2

2

OAuth の実装は非常に困難です。あなたが探している答えではないかもしれませんが、これが私が仕事を成し遂げる方法です:

  1. ローカルの開発マシンにコードを書きます。
  2. msbuild デプロイ スクリプトを実行し、アプリケーションをテスト サーバーにデプロイするバット ファイルを実行します (または、VS でビルド後のイベントをフックします)。
  3. テスト サーバーでアプリケーションを実行します。リクエスト トークンを取得して承認をリクエストすると、Evernote の Web サイトにリダイレクトされます。
  4. 認証が成功すると、Evernote Web サイトはテスト サーバーにリダイレクトされ、認証されたリクエスト トークンがアクセス トークンと交換されます。
  5. デバッグする代わりに (私はテスト サーバーに VS を持っていません)、アプリケーションのログを調べます (使用したログは、テキスト ファイルに書き込むのと同じくらい簡単でした)。
  6. すすいで繰り返す

テストの目的で、一時的なパブリック サブドメイン (testing.oauth.mydomain.com など) を登録して、Evernote がその URL にリダイレクトできるようにしました。

于 2008-12-07T12:34:09.263 に答える
0

これによると ( OAuth に対してローカルで開発するにはどうすればよいですか? )、コールバックはブラウザーによって発行されるため、localhost にヒットできるはずです。

于 2009-04-05T16:18:24.920 に答える