KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

OAuth1 認証 アクセストークン発行


こんにちは、松野です。
今月も先月に引き続きOAuthの勉強をしたいと思います。
前回はOAuth1(Twitter)で、認証画面を出すまでやりましたね。
今回はその認証画面から先、ユーザID取得までをやりたいと思います。

まず、認証画面をパスしたら、アプリ登録時に記述したリダイレクト先に、パラメータOAUTH_TOKENとOAUTH_VERIFIERを持って画面が戻ってきます。
このTOKENとVERIFIERを使って、認証していきます。

まず、前回同様パラメータを作成して暗号化しなければいけません。

取得用URL=https://api.twitter.com/oauth/access_token
oauth_consumer_key=コンシュマーキー
oauth_nonce=ランダムな文字列
oauth_signature_method=HMAC-SHA1
oauth_timestamp=10桁の時間(Javaの場合はLong.toString(new Date().getTime()).substring(0, 10); で取得可能)
oauth_token=パラメタに付随してきたOAUTH_TOKEN
oauth_verifier=パラメタに付随してきたOAUTH_VERIFIER
oauth_version=1.1

取得用URLをURLエンコードします。
そしてパラメタをすべて&でつなげてURLEncodeします。
最後に
POST&エンコード済み取得用URL&エンコード済みパラメタ
の文字列を作り、ConsumerSecret + “&”を使いHmacSHA1で暗号化してBASE64で暗号化したものをsignatureパラメータとしてPOSTします。

基本的にパラメタが少し違うだけで前回と同じですね。

この時点で送信する値は
取得用URL https://api.twitter.com/oauth/access_token
oauth_consumer_key=コンシュマーキー
oauth_nonce=ランダムな文字列
oauth_signature_method=HMAC-SHA1
oauth_timestamp=10桁の時間(Javaの場合はLong.toString(new Date().getTime()).substring(0, 10); で取得可能)
oauth_token=パラメタに付随してきたOAUTH_TOKEN
oauth_verifier=パラメタに付随してきたOAUTH_VERIFIER
oauth_version=1.1
oauth_signature=上記で作成したBase64エンコード済みsignature

この値を送れば、晴れてユーザID等が入ったデータがTwitterから取得できます。

OAuth1はこのように非常にややこしく、面倒くさいです。
次回は少し簡単になったOAuth2の認証について勉強しますので、乞うご期待!

【関連記事】
ハニーポットについて (1)サーバーを立てる
ハニーポットについて (2)アクセスログ有効活用方法
TopCoderをやろう!
TopCoderをやろう 等差数列の問題
今月はTopcoderじゃなくてCodeIQ!
俺googleのページランクのアルゴリズム知ってるんだぜ!
サメの種類と生態
プログラマならできて当たり前、fizzbuzz問題
OAuth1 認証 リクエストトークン発行まで