北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

はてな認証API

これまた今更ですが試してみました! 簡単に認証ができていいですね。ここここを参照です。


で、理論はおいておいて、モジュール使った方が楽なのでHatena::API::Authです。あと、Webの作り込みを省略するためにCatalyst使いました。

  • まず、sudo cpan -i JSONくらいしとくと依存関係解消できるかも
  • sudo cpan -if Hatena::API::Auth します。forceしないとテスト通りませんでした。
  • catalyst.plで普通にプロジェクトを作ります
  • viewさえあればいいので、script/XXXX_create.pl view TT TT って感じ。
  • lib/XXXX/Contoroler/Root.pm を、ざっくり以下の感じに*1
use Hatena::API::Auth;

sub _get_auth : Private {
    my $self = shift;
    return Hatena::API::Auth->new({
        api_key => 'はてなに登録したAPIキーね',
        secret  => 'はてなに登録した秘密鍵ね',
    });
}

sub default : Private {
    my ( $self, $c ) = @_;

    $c->stash()->{AUTH} = $self->_get_auth();

}

sub auth : Local {
    my ( $self, $c ) = @_;
    my $auth = $self->_get_auth();

    my $user = $auth->login($c->req()->param('cert'));

    $c->stash()->{USER} = $auth;
}
  • 上のコード用にテンプレ作る。手抜きで以下。
root/default
<a href="[% AUTH.uri_to_login %]">hatena</a>

root/auth
[% USER.name %]<br />
<a href="[% USER.image_url %]"><img src="[% USER.thumbnail_url %]" /></a>


こんな感じで試すと、動きが見れると思います。実践では、Hatena::API::Auth::Userオブジェクトを手にしたら、セッションにいれるなり好きに調理すればいいかと。




追記。そういや、Catalystプラグインくらいあるんじゃないかと思って探したら、当然のごとくありました。Authentication::Credential::Hatenaです。これに関してはこのエントリでは解説してないんです、ごめんなさいm(_ _)m。

*1:汎用メソッドをPrivate定義でいいかは知りません