利用者認証

ここからが面倒、というか、ここの流れを理解出来ればあとはコレの応用。
基本的には、以下のものをリクエスト認証用URLに投げてRequest TokenとRequest Secretを貰うんだけど、これがまためんどい。
ここから何をするにも必要なもの。基本的にはリクエストのクエリとしてくっつける。

  1. oauth_token(ここではConsumer Token)
  2. oauth_timestamp(UNIX時間のタイムスタンプ)
  3. oauth_nonce(ランダム生成した文字列)
  4. oauth_signature_method(署名の生成方式。twitterだとHMAC-SHA1
  5. oauth_version(基本的に1.0)
  6. oauth_signature(共通鍵を使ったリクエストの署名)

で、oauth_sinatureを作るために以下の手順を踏む必要がある。

  1. HTTPメソッド名
  2. 宛先URL
  3. 上記のなかからoauth_signatureを除いたクエリ文字列(他に必要なパラメータがあればそれも含める)

上記3つをURLエンコードした後"&"で接続した文字列を、oauth_signature_methodで指定した方式で必要な共通鍵を&で連結したもの(ここではConsumer Secert+"&")をキーに署名を取得、base64エンコードする。これがoauth_signatureになる。
で、めでたくクエリが完成したらリクエスト用URLにクエリをくっつけて投げる。
上手く行けば、Request TokenとRequest Secretが帰ってくる。
署名が変だったり、typoしてたりすると認証失敗したよーってメッセージが帰ってくるので、その時はやり直し。