1

わかりました、私はそれが何であるかを本当に知っています。私はずっと前にFacebook/TwitterAPIを使用しています。そしてそれは動作します、バグはありません、ごめんなさい:)。しかし、次のことが私を悩ませます。

OAuthプロバイダー側​​からのトークンとは何ですか?クライアント側からのみトークンが表示されます。しかし、興味深いことが1つあります。わかりやすいです。

デフォルトでは、私が受け取るトークンは時間に制限があります。ただし、オフラインアクセスを使用してAPIをリクエストすると、受け取ったトークンは時間制限なしで永遠に機能します。トークンはこの方法でOAuthプロバイダーデータベースに保存する必要がありますか?もしそうなら、何がユーザーがミリアードのトークンを生成するのを妨げますか?トークンがたくさんあり、それらすべてが時間制限なしでデータベースに保存されている場合はどうなりますか?その後、データベースはごみのヒープになります。これは本当の方法ですか?

トークンがどのように保存されるかについて、2つの仮定があります。

  1. トークンは、それに割り当てられたアクセス権のセットの単純なIDであり、各トークンはOAuthプロバイダー側​​に保存されます。

  2. トークンは独立した概念です。アクセス権は暗号化されてトークンにパックされ、プロバイダー側​​で復号化されます。トークンの有効期間も含まれています

2番目の質問。独自のOAuthプロバイダーを開発したい場合、トークンを保存するための最良の方法は何ですか?

4

1 に答える 1

2

OAuthトークンは単なるIDであり、情報は含まれていません。実際、トークンに実際の情報が含まれていると、ハッキングが容易になるため、適切ではありません。プロバイダーは、そのトークンをアプリケーションアカウントに関連付け、必要な情報を独自のデータベースに保存します。Facebookについてはわかりませんが、TwitterのOAuthトークンは、所有者が再生成しない限り有効期限が切れません。

OAuthを実行しているときは、プログラムで作業しているユーザーが誰であるかがわかり、ユーザーデータを保持するための独自のデータベーステーブルがあります。ユーザーの最初のOAuth認証で、ユーザーの資格情報を取得してデータベースに保存します。次に、サービス(Twitterなど)に対して行う後続のクエリごとに、ユーザーが再度認証する必要がないように、これらの資格情報を再読み込みします。現在のクレデンシャルを使用したクエリが失敗した場合、古いクレデンシャルが何らかの理由で期限切れになった場合に備えて、新しいクレデンシャルを再認証して保存することをお勧めします。このように、システム内の各ユーザーのOAuthトークンのみがあり、そのユーザーの存続期間を管理します。

于 2012-06-15T20:03:41.983 に答える