OAuth の用語は解りにくいので、まず前提条件として表現を変えます。
1) Consumer key : アプリケーションID
2) Consumer secret : アプリケーションパスワード
1) Access Token : アクセスID
2) Access Token Secret : アクセスパスワード
さらに、通常の投稿をするには手順中の一時的なトークンがありますが、呼び出し URL が api.twitter.com/oauth/request_token なので以下のような呼び名にします
1) Token : リクエストID
2) Token Secret : リクエストパスワード
最初の呼び出し
呼び出すAPI : https://api.twitter.com/oauth/request_token
必要な情報
1) コールバック URL
2) アプリケーションID
3) ランダムな文字列
4) "HMAC-SHA1"
5) Unix タイムスタンプ
6) "1.0"
これらのデータを含む文字列を HMAC-SHA1 で、アプリケーションパスワードを使って signature 文字列を作成します。そして、http ヘッダーに signature 文字列 を含む他の情報をセットして呼び出します。( POST データとして送る事もできるはずです )
向こう側では、その送られたデータを、向こう側で保存されている アプリケーションパスワードで、HMAC-SHA1 を使って signature 文字列を作成し、送られて来たsignature 文字列と一致するかどうかを確かめます。一致すれば リクエストID と リクエストパスワードを送り返します。
Twitter サイトでの承認
https://twitter.com/oauth/authorize?oauth_token=リクエストID でアクセスします。WEBアプリケーションからスムーズに移行するには、リダイレクトしますが、デスクトップアプリケーションの場合は、ここだけはブラウザを使用する事になります。
この結果、Twitter にログインしていない場合は、大元のユーザ ID とパスワードを入力しますが、ログイン済の場合は、承認のみ行う事になります。この結果、WEBアプリケーションでは、コールバック URL に対して、oauth_verifier が戻される事になります。これは、デスクトップアプリケーションにおけれ PIN にあたりますが、要するに「ワンタイムパスワード( 本人確認の手順の一部 )」です。
アクセスIDとアクセスパスワードを取得
これでやっと、ユーザIDとパスワードの代替えである、アクセスの委譲を行う為のアクセスIDとアクセスパスワードを取得する事ができます。
呼び出すAPI : https://api.twitter.com/oauth/access_token
必要な情報
1) アプリケーションID
2) ランダムな文字列
3) "HMAC-SHA1"
4) Unix タイムスタンプ
5) リクエストID
6) ワンタイムパスワード
7) "1.0"
このデータの送信で使われるパスワードは、アプリケーションパスワード に加えてリクエストパスワード です。両方を使って signature 文字列を作成して API に対て http ヘッダーを通して情報を送ります。今回だけのリクエスト ID と今回だけのワンタイムパスワードを含む文字列を秘密のパスワードを二つ使って署名します。
このデータは、一連の手順を経ないと得られないものであり、かつ、サーバのみ一致するかどうかを確認できます。
この結果得られるのが、アクセスID と アクセスパスワードであり、必要であればこのデータをセッションやファイルやデータベースに保存しておくと、認証の必要無く API にアクセスできる事になります。
このアクセスID と アクセスパスワードは有効期限の無いセッションのようなもので、ずっとPCを切らないで、ブラウザを閉じないようなものです。但し、キャンセルする方法として、ユーザの「連携アプリ」として登録されている該当のアプリを削除(許可を取り消す)するとキャンセルされます。( 次に使う時は再度承認する事になります )
そうする事によって、このアクセスID と アクセスパスワードはリセットされ、以前とは違うものになります
posted by
at 2010-05-31 20:00
|
Twitter
|

|