PerlでOAuth④ – Twitter

いよいよAPIを叩いてみます。

# ■なにかつぶやいてみる例
# このソースはかなり簡略化してますので、自分のソースに合った改変は必須かと思います。
# statuses/updateを使用して、結果をXMLで受け取る例です。

use LWP::UserAgent;
use Encode;
use Net::OAuth;
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;

# 前回取得したアクセストークンとシークレット
my $access_token = 'アクセストークン';
my $access_secret = 'トークンシークレット';

# 各APIメソッド毎にURLとリクエストメソッドが異なるので注意
my $API_Method_url = 'https://twitter.com/statuses/update.xml';
my $request_method = 'POST'; 

# なにかつぶやく
my $message = 'PENTAX K-7は良いカメラだぜぃ';

# OAuthリクエスト
my $request = Net::OAuth->request("protected resource")->new(
        consumer_key 	=> 'Twitterから取得したキー',
        consumer_secret => 'Twitterから取得しシークレット',
        request_url => $API_Method_url,
        request_method => $request_method,
        signature_method => 'HMAC-SHA1',
        timestamp => time,
        nonce => 'ランダム文字列', # 毎回変更
        token => $access_token,
        token_secret => $access_secret,
        extra_params => { status => decode_utf8($message) },
   );

# extra_paramsに各APIメソッドのパラメータ値のハッシュをセットする(今回は"status")
# decode_utf8についてはNet::OAuthのドキュメント(下記URL)を見てください。
# http://search.cpan.org/~kgrennan/Net-OAuth-0.19/lib/Net/OAuth.pm#I18N

$request->sign;

my $ua = LWP::UserAgent->new;
my $http_hdr = HTTP::Headers->new('User-Agent' => $ClientUA_name);
my $http_req = HTTP::Request->new($request_method, $API_Method_url, $http_hdr, $request->to_post_body);
my $http_res = $ua->request($http_req);

# 結果のXML
my $res_xml = $http_res->content;

これでつぶやくはず。。。

あ、ソースは全部utf8で書いてます。
あ、エラー処理とか全力で省いてます。
あ、今回色々試したい事もあったので、Net::OAuthにしましたですが、Net::Twitterとか使ったほうが、以外に簡単かもしれませんよ?w

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


投稿日

カテゴリー:

投稿者:

タグ: