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