弊社の OpenID 拡張の参考に。。色々調べてるところです。
mixi の OpenID が AX と SREG に対応してるとの事なので試してみた。
SREG は使った事あるので、今回は AX を実装。以下のような感じでちゃんとニックネーム取れた。
AXだと独自で拡張した野良フィールド足して返してもいいのかなぁ。
やはり、さらりと使いたい人用の SREG と色々追加の属性が取れる AX の両方を実装しておいた方がいいのだろうか。
mixi の OpenID が AX と SREG に対応してるとの事なので試してみた。
SREG は使った事あるので、今回は AX を実装。以下のような感じでちゃんとニックネーム取れた。
AXだと独自で拡張した野良フィールド足して返してもいいのかなぁ。
やはり、さらりと使いたい人用の SREG と色々追加の属性が取れる AX の両方を実装しておいた方がいいのだろうか。
# だいぶ適当 sub login : Local { my( $self, $c ) = @_; my $csr = Net::OpenID::Consumer->new( ua => LWP::UserAgent->new, args => $c->req->parameters, consumer_secret => 'xxx', required_root => 'http://localhost:3000', ); my $identity = $c->req->param('identity'); if ($c->req->param('openid-check')) { if (my $vident = $csr->verified_identity) { my $ax = $vident->signed_extension_fields( 'http://openid.net/srv/ax/1.0', ); # ニックネームとれた! return $c->res->body( join ':', $vident->url, $ax->{'value.nickname'} ); } } elsif (my $claimed = $csr->claimed_identity($identity)) { $claimed->set_extension_args('http://openid.net/srv/ax/1.0', { mode => 'fetch_request', 'type.nickname' => 'http://axschema.org/namePerson/friendly', required => 'nickname', }); my $check_url = $claimed->check_url( delayed_return => 1, return_to => 'http://localhost:3000/login?openid-check=1', trust_root => 'http://localhost:3000', ); return $c->res->redirect( $check_url ); } }