利用者認証
ここからが面倒、というか、ここの流れを理解出来ればあとはコレの応用。
基本的には、以下のものをリクエスト認証用URLに投げてRequest TokenとRequest Secretを貰うんだけど、これがまためんどい。
ここから何をするにも必要なもの。基本的にはリクエストのクエリとしてくっつける。
- oauth_token(ここではConsumer Token)
- oauth_timestamp(UNIX時間のタイムスタンプ)
- oauth_nonce(ランダム生成した文字列)
- oauth_signature_method(署名の生成方式。twitterだとHMAC-SHA1)
- oauth_version(基本的に1.0)
- oauth_signature(共通鍵を使ったリクエストの署名)
で、oauth_sinatureを作るために以下の手順を踏む必要がある。
- HTTPメソッド名
- 宛先URL
- 上記のなかからoauth_signatureを除いたクエリ文字列(他に必要なパラメータがあればそれも含める)
上記3つをURLエンコードした後"&"で接続した文字列を、oauth_signature_methodで指定した方式で必要な共通鍵を&で連結したもの(ここではConsumer Secert+"&")をキーに署名を取得、base64でエンコードする。これがoauth_signatureになる。
で、めでたくクエリが完成したらリクエスト用URLにクエリをくっつけて投げる。
上手く行けば、Request TokenとRequest Secretが帰ってくる。
署名が変だったり、typoしてたりすると認証失敗したよーってメッセージが帰ってくるので、その時はやり直し。