Net::Twitter::Role::OAuth のサンプルコードが少し違うかも

http://search.cpan.org/~mmims/Net-Twitter-3.11004/lib/Net/Twitter/Role/OAuth.pm 中にWebアプリケーションの例がありますが、2010年2月13日の時点ではこの通り実行してもtwitter_auth_callback の request_access_tokenで失敗します。

成功させるには、callbackに渡された oauth_token を request_access_token の引数に追加する必要があるようです。

sub oauth_callback : Local {
    my ( $self, $c ) = @_;

    my %cookie = $c->request->cookies->{oauth}->value;
    my $token = $c->req->params->{oauth_token};         # oauth_tokenを取得
    my $verifier = $c->req->params->{oauth_verifier};

    my $nt = Net::Twitter->new(traits => [qw/API::REST OAuth/],
        consumer_key => 'CONSUMER_KEY',
        consumer_secret => 'CONSUMER_SECRET');
    $nt->request_token($cookie{token});
    $nt->request_token_secret($cookie{token_secret});

    my ($access_token, $access_token_secret, $twitter_id, $screen_name)
        = $nt->request_access_token(token => $token, verifier => $verifier); # tokenを追加
}

OAuth 自体のドキュメントは読んでないので、「正しい」のかどうか分からないですが……。