これまた今更ですが試してみました! 簡単に認証ができていいですね。こことここを参照です。
で、理論はおいておいて、モジュール使った方が楽なので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>
- はてなAPIに登録必要。コールバックを、http://yourhost/yourapp/auth/ にする。
こんな感じで試すと、動きが見れると思います。実践では、Hatena::API::Auth::Userオブジェクトを手にしたら、セッションにいれるなり好きに調理すればいいかと。
追記。そういや、Catalystにプラグインくらいあるんじゃないかと思って探したら、当然のごとくありました。Authentication::Credential::Hatenaです。これに関してはこのエントリでは解説してないんです、ごめんなさいm(_ _)m。
*1:汎用メソッドをPrivate定義でいいかは知りません