Perl: Amon2 で Twitter 認証 (Amon2::Auth::Site::Twitter プラグイン)

cpanfile に以下追加して cpanm --installdeps . しとく

requires 'Amon2::Auth::Site::Twitter';

これは、Amon2 で Twitter Auth してくれる便利なやつ。
CPAN: Amon2::Auth::Site::Twitter

ssl まわりはどげんかせんといかんけどとりあえず Twitter developers (https://apps.twitter.com/) で設定したキー、シークレットを config に設定。
ちなみに Website を http://127.0.0.1:5000/ 、 Callback URL を http://127.0.0.1:5000/callback とした。

Perl: config/development.pl

Auth => +{
    Twitter => +{
        consumer_key    => '******',
        consumer_secret => '******',
        ssl => 0,
    },
},

Perl: lib/pictpedia/Web.pm

__PACKAGE__->load_plugin('Web::Auth', {
    module => 'Twitter',
    on_finished => sub {
        my ($c, $access_token, $access_token_secret, $user_id, $screen_name) = @_;
        warn $user_id;
        warn $screen_name;
        warn $access_token;
        warn $access_token_secret;
        $c->session->set('name' => $screen_name);
        $c->session->set('site' => 'twitter');
        return $c->redirect('/mypage');
    }
});

あとはルーティング。

Xslate (Kolon): tmpl/web/index.tx

<a href="<: uri_for('/auth/twitter/authenticate') :>">Twitter Login</a>

/auth/twitter/authenticate がデフォルトの認証開始先なのでここに飛ばせばログイン認証を開始できる。

ログインが成功すれば Web::Auth プラグインの on_finished で設定した /mypage に飛ばされてイチャイチャできる。