いよいよ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