PerlでOAuth② – Twitter

まず、Twitterのアプリ登録ページで各種設定を行い、Consumer KeyとConsumer Secretを取得します。とりあえず後でも変更は可能なので、アプリ名とか決まって無くても、間に合わせで設定しても大丈夫。
ただ、Application Typeの設定によって、承認済リクエストトークンとヴェリファイアの取得方法が変わって来るので、ココはきちんと設定しておきましょう。今回の例はブラウザベースで話を進めます。

で、コンシューマキーとシークレットを取得したら、その各値を使ってRequestTokenを取得します。

# ■リクエストトークンの取得
# このソースは簡略化してますので、自分のソースに合った改変は必須かと思います。
use LWP::UserAgent;
use Net::OAuth;
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;

my $request_token_url = 'http://twitter.com/oauth/request_token';
my $request_method = 'GET';

my $request = Net::OAuth->request("request token")->new(
    consumer_key 	=> 'Twitterから取得したキー',
    consumer_secret => 'Twitterから取得しシークレット',
    request_url => $request_token_url,
    request_method => $request_method,
    signature_method => 'HMAC-SHA1',
    timestamp => time,
    nonce => 'ランダム文字列', #要毎回変更
    callback => 'http://yoursite', #アプリ登録時のコールバックアドレス
    );
# nonceとtimestampについてはhttp://oauth.net/core/1.0/#nonce を参照

$request->sign;

my $ua = LWP::UserAgent->new;
my $http_hdr = HTTP::Headers->new('Authorization' => $request->to_authorization_header);
my $http_req = HTTP::Request->new($request_method, $request_token_url, $http_hdr);
my $http_res = $ua->request($http_req);

my $RequestTokenStr = $http_res->content;

以上w
$RequestTokenStrには
「oauth_token=[未承認RequestToken値]&oauth_token_secret=[ReuestTokenSecret値]&oauth_callback_confirmed=true」な感じで値が返りますので、Net::OAuth->responseや、その他お好みの方法で各値に分解します。

2010/02/06追記: Syntax-Hilighter入れてみたw


投稿日

カテゴリー:

投稿者:

タグ: