info.vividcode.util.oauth
クラス OAuthRequestHelper

java.lang.Object
  上位を拡張 info.vividcode.util.oauth.OAuthRequestHelper

public class OAuthRequestHelper
extends java.lang.Object

OAuth 認証を用いた HTTP リクエストを手助けするためのクラス.

使用例は以下である.

  // Twitter に Request token を求める際の例
  
  // 送信先 URL
  String url = "https://api.twitter.com/oauth/request_token";
  // リクエストメソッド
  String method = "POST";
  // Consumer key と secret
  String consumerKey    = "XXXXXXXXXX";
  String consumerSecret = "XXXXXXXXXX";
  // 今回は request token を求める例で token secret はないので空文字列
  String tokenSecret = "";
  // secrets 文字列 (Consumer secret と token secret を繋いだもの)
  String secrets = consumerSecret + "&" + tokenSecret;
  // OAuth 関係のパラメータ
  OAuthRequestHelper.ParamList paramList = new OAuthRequestHelper.ParamList( 
        new String[][]{
          { "oauth_consumer_key", consumerKey },
          { "oauth_nonce", OAuthRequestHelper.getNonceString() },
          { "oauth_signature_method", "HMAC-SHA1" },
          { "oauth_timestamp", Long.toString( new Date().getTime() / 1000 ) },
          { "oauth_version", "1.0" },
          { "oauth_callback", "oob" },
        } );
  // OAuthRequestHelper のインスタンス化
  // 今回はクエリパラメータにもリクエストボディにも情報を載せないので, 後ろ 2 つの引数は null
  OAuthRequestHelper helper = new OAuthRequestHelper( url, method, secrets, paramList, null, null );
      // インスタンス化と同時にシグニチャ生成もされるので, あとは helper から情報を取って
      // リクエストを送信するだけ
  
  // リクエスト先への connection 生成
  URL u = new URL( helper.getUrlStringIncludeQueryParams() );
  HttpURLConnection conn = (HttpURLConnection)u.openConnection();
  // リクエストメソッドのセット
  conn.setRequestMethod( helper.getRequestMethod() );
  // Authorization ヘッダのセット
  conn.addRequestProperty( "Authorization", helper.getAuthorizationHeaderString("") );
  // 接続
  conn.connect();
      // 後はレスポンスを受け取って処理する

作成者:
nobuoka

入れ子のクラスの概要
static class OAuthRequestHelper.Param
          リクエスト時に送信する単一のパラメータを表すクラス.
static class OAuthRequestHelper.ParamComparator
          パラメータ同士の比較を行うためのクラス.
static class OAuthRequestHelper.ParamList
          パラメータ (Param オブジェクト) のリストを表すクラス.
 
コンストラクタの概要
OAuthRequestHelper(java.lang.String urlStr, java.lang.String method, java.lang.String secretsStr, OAuthRequestHelper.ParamList oauthParams, OAuthRequestHelper.ParamList urlQueryParams, OAuthRequestHelper.ParamList reqBodyParams)
          OAuth 認証を用いた HTTP リクエストに必要な情報を保持した OAuthRequestHelper オブジェクトを生成する.
 
メソッドの概要
 java.lang.String getAuthorizationHeaderString(java.lang.String realmStr)
          HTTP リクエストの Authorization ヘッダとして送信すべき文字列を返す.
static java.lang.String getNonceString()
          OAuth 認証に用いる nonce 文字列を生成する.
static java.lang.String getNonceString(int length)
          OAuth 認証に用いる nonce 文字列を, 指定の長さで生成する.
 java.lang.String getRequestBodyString()
          リクエストボディとして送信すべき値を文字列として取得する.
 java.lang.String getRequestBodyString(boolean includeOAuthParams)
          リクエストボディとして送信すべき値を文字列として取得する.
 java.lang.String getRequestMethod()
          リクエストメソッドを返す.
 java.lang.String getUrlStringIncludeQueryParams()
          クエリパラメータを含んだ URL を文字列として返す.
 java.lang.String getUrlStringIncludeQueryParams(boolean includeOAuthParams)
          クエリパラメータを含んだ URL を文字列として返す.
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

OAuthRequestHelper

public OAuthRequestHelper(java.lang.String urlStr,
                          java.lang.String method,
                          java.lang.String secretsStr,
                          OAuthRequestHelper.ParamList oauthParams,
                          OAuthRequestHelper.ParamList urlQueryParams,
                          OAuthRequestHelper.ParamList reqBodyParams)
                   throws java.security.GeneralSecurityException
OAuth 認証を用いた HTTP リクエストに必要な情報を保持した OAuthRequestHelper オブジェクトを生成する.

パラメータ:
urlStr - リクエスト先の URL. クエリーパラメータは含めない
method - リクエストメソッド. "PUT" や "GET" など
secretsStr - Consumer secret と token secret を "&" 記号で繋いだ文字列. token secret がない場合は空文字列を使う
oauthParams - OAuth 認証のためのパラメータのリスト
urlQueryParams - クエリーパラメータのリスト
reqBodyParams - リクエストボディに含めるパラメータのリスト
例外:
java.security.GeneralSecurityException - OAuth 認証の署名ができなかった場合に発生する
メソッドの詳細

getNonceString

public static java.lang.String getNonceString()
OAuth 認証に用いる nonce 文字列を生成する.

戻り値:
長さ 16 の nonce 文字列

getNonceString

public static java.lang.String getNonceString(int length)
OAuth 認証に用いる nonce 文字列を, 指定の長さで生成する.

パラメータ:
length - 生成する nonce 文字列の長さ
戻り値:
生成した nonce 文字列

getUrlStringIncludeQueryParams

public java.lang.String getUrlStringIncludeQueryParams()
クエリパラメータを含んだ URL を文字列として返す. OAuth 関係のパラメータはクエリパラメータに含めない.

戻り値:
クエリパラメータを含んだ URL の文字列表現

getUrlStringIncludeQueryParams

public java.lang.String getUrlStringIncludeQueryParams(boolean includeOAuthParams)
クエリパラメータを含んだ URL を文字列として返す. OAuth 関係のパラメータを含めるかどうかは引数によって決める.

パラメータ:
includeOAuthParams - OAuth 関係のパラメータをクエリパラメータに含めるかどうか. 含める場合は true
戻り値:
クエリパラメータを含んだ URL の文字列表現

getRequestBodyString

public java.lang.String getRequestBodyString()
リクエストボディとして送信すべき値を文字列として取得する. OAuth 関係のパラメータはクエリパラメータに含めない.

戻り値:
リクエストボディとして送信すべき文字列

getRequestBodyString

public java.lang.String getRequestBodyString(boolean includeOAuthParams)
リクエストボディとして送信すべき値を文字列として取得する. OAuth 関係のパラメータを含めるかどうかは引数によって決める.

パラメータ:
includeOAuthParams - OAuth 関係のパラメータをクエリパラメータに含めるかどうか. 含める場合は true
戻り値:
リクエストボディとして送信すべき文字列

getAuthorizationHeaderString

public java.lang.String getAuthorizationHeaderString(java.lang.String realmStr)
HTTP リクエストの Authorization ヘッダとして送信すべき文字列を返す. 形式は以下のようなものである.
  OAuth realm="...", oauth_timestamp="...", oauth_verifier="...", ...

パラメータ:
realmStr - realm として含める文字列
戻り値:
HTTP リクエストの Authorization ヘッダとして送信すべき文字列

getRequestMethod

public java.lang.String getRequestMethod()
リクエストメソッドを返す.

戻り値:
インスタンス生成時に指定したリクエストメソッド