OAuth特有の引数を準備するVBA
手順1の部分のスクリプトは以下のようになります。
[リスト2]手順1.OAuth特有の引数を準備する
Private Sub SetParam(ByVal phase As Integer)
param("oauth_consumer_key") = Range("consumer_key")
param("oauth_signature_method") = "HMAC-SHA1"
timestamp = DateDiff("s", #1/1/1970#, Now)
param("oauth_timestamp") = CStr(timestamp)
param("oauth_nonce") = CStr(timestamp + 1)
Select Case phase
Case 2 'アクセス・キー取得フェーズの追加引数
param("oauth_token") = Range("request_token")
param("oauth_token_secret") = Range("request_secret")
param("oauth_verifier") = Range("pinCode")
Case 3 'Webサービス利用フェーズの追加引数
param("oauth_token") = Range("access_token")
End Select
End Sub
これは、OAuthで必要な引数を設定したプロシージャです。仮引数のphaseはそれぞれ以下の意味を持っています(表3)。
表3. 仮引数phaseの意味
値 | 意味 |
---|---|
1 | リクエスト・トークンの要求 |
2 | アクセス・トークンの要求 |
3 | Webサービスへのアクセス |
設定する引数のイメージは、図5のようになります。
詳細は、以下の通りです。P1~3列の○/-は、フェーズ1~3での指定の要否を表します。
表4.OAuthの引数の種類と設定
P1 | P2 | P3 | 引数名 | 内容 | 設定値 |
---|---|---|---|---|---|
○ | ○ | ○ | oauth_consumer_key | コンシューマー・キー | アプリ登録時の文字列を設定 |
○ | ○ | ○ | oauth_signature_method | 電子署名の方式 | Twitterの場合、HMAC-SHA1固定 |
○ | ○ | ○ | oauth_timestamp | 1970年1月1日から現在までの秒数 | HTTP通信を行うごとに増加する値を設定する必要あり |
○ | ○ | ○ | oauth_nonce | ランダムな文字列 | HTTP通信を行うごとに異なる必要あり |
- | ○ | ○ | oauth_token | トークン文字列 | フェーズ2ではリクエスト・トークン、フェーズ3ではアクセス・トークンを設定 |
- | ○ | - | oauth_verifier | ユーザーが認証したことの確認 | フェーズ2で、ブラウザに表示されたPINコードを設定 |
○ | ○ | ○ | oauth_signature | 電子署名 | 上記の引数を含む文字列から作成した電子署名の文字列を設定 |
timestampには、DateDiff関数を用いて設定値を求め、CStr関数で文字列に変換したものを、oauth_timestamp
引数に設定しています。また、oauth_nonce
引数には重複しないよう、便宜的にtimestamp + 1 の値を文字列に変換して設定しています。