perlのOAuthモジュールである「Net::OAuth2」を使い、Google OAuth2を行なってみたのでログとして残しておきたいと思います。
まず、OAuthで使用するアプリはここから作成しておきます。
ソースは下記のようになりました。
広告
FWはDancerを使っているため、一部Dancerのシンタックスが含まれています。
use Dancer ':syntax'; use Net::OAuth2::Client; sub oauth { return Net::OAuth2::Client->new( "Client ID", "Client secret", site => 'https://www.googleapis.com', authorize_url => 'https://accounts.google.com/o/oauth2/auth', access_token_url => 'https://accounts.google.com/o/oauth2/token', )->web_server( redirect_uri => uri_for('/auth/google/callback') ); } get '/auth/google' => sub { my $url = oauth->authorize_url( scope => 'https://www.googleapis.com/auth/userinfo.profile', ); redirect $url; }; get '/auth/google/callback' => sub { if ( params->{error} ) { # OAuth拒否 } elsif ( params->{code} ) { # OAuth許可 my $access_token = oauth->get_access_token( params->{code} ); my $response = $access_token->get('/oauth2/v1/userinfo'); if ( $response->is_success ) { my $user = from_json( $response->decoded_content, { utf8 => 1 } ); # ユーザ情報を使って何か処理... } } }; |