OAuth1 認証 アクセストークン発行
- 2015年07月22日
- CATEGORY- 1. 技術力{技術情報}
こんにちは、松野です。
今月も先月に引き続き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 認証 リクエストトークン発行まで
- 2015年07月22日
- CATEGORY- 1. 技術力{技術情報}