« Data::Page::Navigation いい感じのページナビゲーション | メイン | CPANの更新が止まっているみたい。 »

CatalystでTypeKey認証

実験でいろいろとやるうちに、

use Catalyst qw/-Debug Static::Simple Config::YAML FormValidator::Simple
    Session Session::Store::FastMmap Session::State::Cookie 
    Authentication Authentication::Credential::TypeKey/;

SessionとAuthentication関連が長いし大杉。
すっきりと書ける方法ないですかねぇ。

CatalystでTypeKey認証をする、Catalyst::Plugin::Authentication::Credential::TypeKeyは以下のような形で使用できる。
CPANにあがっていない場合はこちらのページからたどると入手できるはず。

use Catalyst qw/Authentication Authentication::Credential::TypeKey/;#セッションもあるといい

sub do_login : Local {
    my ( $self, $c ) = @_;
    $c->authenticate_typekey;
    $c->res->redirect('/');
}

sub login : Local {
    my ( $self, $c ) = @_;
    $c->res->redirect('https://www.typekey.com/t/typekey/login?t=' . 
    	$c->config->{authentication}{typekey}{token} . '&_return=' . $c->uri_for('/do_login'));
}


typekeyの認証がVer. 1.1ではうまく行かないらしいので、設定で

authentication:
    typekey:
        version: 1
        token: **
    use_session: 1

などとする必要があるらしい


と書いていたら、さきほどmiyagawaさんがCatalystのMLで発言されていて、

But let me admit that there was a little funkiness when I first tried
the authentication using v1.1 and I believe it was related to
need_email part. Can you explicitly supply need_email=0 or 1 in the
original login URL for TypeKey and see what happens?

とも書いているのであとで試すことにしよう。


追記:
リダイレクトのリクエスト文字列にv=1.1を入れればOK

$c->res->redirect('https://www.typekey.com/t/typekey/login?t=' . 
    $c->config->{authentication}{typekey}{token} . '&v=1.1&_return=' . $c->uri_for('/do_login'));

でいけました。もちろんconfigの「version: 1」もなしです。

トラックバック

この一覧は、次のエントリーを参照しています: CatalystでTypeKey認証:

» Catalystではてな認証APIを使うプラグイン from Monologue
何かWebアプリでも作りたいなーという時にCatalystでがっつり認証処理を作るのは少し面倒。 そこで、Catalystで今流行り(?)のはてな認... [詳しくはこちら]

コメント

いまもircでチャットしているんですが、きちんと token を指定して、v=1.1 をlogin URL に入れれば動くはずです。

$c->res->redirect(
 'https://www.typekey.com/t/typekey/login?t=' .
 $c->config->{authentication}{typekey}{token} . '&v=1.1&need_email=0&_return=' . $c->uri_for('/do_login')
);

これでうまくいきました。

コメントを投稿