Dancer-Plugin-Auth-Google
view release on metacpan or search on metacpan
lib/Dancer/Plugin/Auth/Google.pm view on Meta::CPAN
[ 'Content-Type' => 'application/x-www-form-urlencoded' ],
{
code => $code,
client_id => $client_id,
client_secret => $client_secret,
redirect_uri => $callback_url,
grant_type => 'authorization_code',
}
);
my ($data, $error) = _parse_response( $res->decoded_content );
if (ref $data && !$error) {
# Google tells us to ignore any unrecognized fields
# included in the response (like their "id_token").
$data = {
access_token => $data->{access_token},
expires_in => $data->{expires_in},
token_type => $data->{token_type},
refresh_token => $data->{refresh_token},
};
}
else {
return send_error('google auth: ' . (defined $error ? $error : 'unknown error'));
}
$res = $furl->get(
'https://www.googleapis.com/oauth2/v2/userinfo',
[ 'Authorization' => 'Bearer ' . $data->{access_token} ],
);
my $user;
($user, $error) = _parse_response( $res->decoded_content );
return send_error("google auth: $error") if $error;
if (exists $user->{verified_email}) {
# we stringify our JSON::Bool data as some session
# backends might have trouble storing objects.
$user->{verified_email} = "$user->{verified_email}";
}
$user = _convert_to_legacy_gplus_format($user) if $legacy_gplus;
session 'google_user' => { %$data, %$user };
( run in 0.787 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )