30

しばらくの間、Facebook Graph API (認証に oauth 2.0 を使用) を正常に使用しています。ここで、開発者が同様の方法で API に接続できるようにする独自の API を作成する必要があります。私はさまざまなライブラリを調べましたが、もう少し無駄のないものが欲しいので、自分で作成することにしました。Facebookでユーザーを認証する必要があるコードを見ると、比較的単純に見えますが、軌道に乗っていない場合は修正してください。

まず、消費者がリダイレクトする必要がある安全なページを提供する必要があります。例: https://api.mydomain.com/oauth/authorize?client_id=CONSUMER_KEY&redirect_url=CALLBACK_URL。ユーザーはアプリケーションを確認し、クエリ文字列に oauth_token を使用して、コールバック URL で提供された URL にリダイレクトします。ここでoauth_token用にランダムな一意の文字列を生成し、この特定の消費者のユーザーに対して保存できると思います(編集:以下の回答を参照してください。これは、ユーザーではなく各消費者アプリケーションに固有でなければなりません)。

これがステップ 1 です。ここで、消費者が Web リクエストをトリガーする 2 つ目の安全なページを提供する必要があります。例: https://api.mydomain.com/oauth/access_token?client_id=CONSUMER_KEY&client_secret=CONSUMER_SECRET&oauth_token=OAUTH_TOKEN_RETURNED_ABOVE。これにより、コンシューマーは上記で返された oauth_token をアクセス トークンと交換できます。ここでも、単純にランダムな一意の文字列を生成し、この特定のコンシューマーのユーザーに対して保存します。

これで、私の API は、それを使用しているユーザーに固有の情報を取得しようとするメソッドの access_token を受け入れるようになります。

物事を正しく理解しているかどうか知りたいです。そうであれば、OAuth 2.0 仕様は非常に些細なことのように思えます。また、なぜ oauth_token を access_token と交換する必要があるのでしょうか? 私は自分の考えを持っていますが、誰かがこれを明確にするのを助けることができれば幸いです。

完全に間違っている場合に、先に進んで時間を無駄にしたくないので、フィードバックをいただければ幸いです。

ありがとう

4

1 に答える 1

49

実際、プロトコルフロー図は、OAuth 2のような仕様を視覚化するのに非常に役立ちますが、部分的にしか機能しません。クライアント側のみのOAuth2ライブラリを実装したばかりなので、正しい方向に進んでいることを確認できます。しかし、ここに落とし穴があります:

oauth_tokenは、(IDのように)アプリケーションを認証するクライアントアプリケーション(つまり、デスクトップFacebookリーダー)に属しています。これを送信して、アプリケーションとログインしたユーザーに固有のaccess_tokenを取得します。これにより、ユーザーに関連する制限されたリソースにアクセスできます。

これが基本的なデスクトップアプリ認証プロセスです(http://developers.gigya.com/020_Developer_Guide/85_REST/OAuth2から取得)

REST OAuth 2.0

実際には、タイムライン付きのフローダイグラム(上から下へ、http ://www.ibm.com/developerworks/web/library/wa-oauthsupport/?ca = drs-から取得)

プロトコルフロー

そして最後に、完全な手順は次のとおりです:(http://h2anetwork.org/ProjectDocs/DPI/DPI_Framework.htmlから取得)

OAuthプロトコルフロー

于 2011-05-13T16:56:58.690 に答える