SQLの窓 イラストAC フリー素材

2010年05月31日

TwitterAPI : OAuth の手順と受け渡しするデータの意味

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 | このブログの読者になる | 更新情報をチェックする


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX