最近人気エントリーに便乗したネタが多くてすみません。
実用! PerlでコマンドラインからTwitter投稿(OAuth対応) では、Net::Twitter を使って OAuth で投稿する方法が紹介されていますね。
ところで、単純な twitter bot 作るのに Net::Twitter 使います?「投稿なんて LWP で1発リクエスト投げればいいだけだから使わない」という人も多いと思いますが、Basic 認証が廃止されたらどうしましょう。
そのようなかた向けに、OAuth::Lite で OAuth 対応な HTTP::Request を作る方法をご紹介します。
consumer key, consumer secret, access token, access token secret は既に何らかの方法で取得できているものとすると、こんな感じです。
use OAuth::Lite::Consumer; my $consumer = OAuth::Lite::Consumer->new( consumer_key => $consumer_key, consumer_secret => $consumer_secret, ); my $access_token = OAuth::Lite::Token->new( token => $access_token, secret => $access_token_secret, ); my $req = $consumer->gen_oauth_request( method => "POST", url => "http://twitter.com/statuses/update.json", token => $access_token, params => { status => $status }, ); # $req は HTTP::Request のインスタンス
これで OAuth 署名のついた HTTP::Request オブジェクトが得られます。
あとは LWP::UserAgent でも Tatsumaki::HTTPClient でも、HTTP::Request を受け入れてくれるお好きなライブラリに渡してやることで、OAuth で Twitter API を使用することができます。
# OAuth::Lite::Consumer->request() で直接リクエストを投げることもできるのですが、自分は AnyEvent で使いたかったので gen_oauth_request() を使う形にしました
これで6月末の Basic 認証廃止も怖くないですね!