GOOGLE-ADWORDS-PERL-CLIENT
view release on metacpan or search on metacpan
lib/Google/Ads/Common/OAuth2ServiceAccountsHandler.pm view on Meta::CPAN
\"iss\":\"${iss}\",
\"prn\":\"${delegated_email_address}\",
\"scope\":\"${scope}\",
\"aud\":\"" . OAUTH2_BASE_URL . "/token\",
\"exp\":${exp},
\"iat\":${iat}
}";
my $encoded_header = __encode_base64_url($header);
my $encoded_claims = __encode_base64_url($claims);
my $key = $self->get___crypt_module()->new_private_key($file) || return 0;
$key->use_pkcs1_padding();
$key->use_sha256_hash();
my $signature = $key->sign("${encoded_header}.${encoded_claims}");
my $encoded_signature = __encode_base64_url($signature);
my $assertion = "${encoded_header}.${encoded_claims}.${encoded_signature}";
my $body = "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" .
"&assertion=" . $assertion;
push my @headers, "Content-Type" => "application/x-www-form-urlencoded";
my $request = HTTP::Request->new("POST", OAUTH2_BASE_URL . "/token",
t/019_OAuth2ServiceAccountsHandler.t view on Meta::CPAN
$response->content("{\n\"scope\":\"https://adwords.google.com/api/" .
"adwords/\"\n\"expires_in\":" . $exp . "\n}");
return $response;
});
ok($handler->is_auth_enabled());
is($handler->get_access_token(), "access-token");
ok($handler->get_access_token_expires());
# Test access token generation.
$crypt_module_mock->mock(new_private_key => sub {
my ($self, $file) = @_;
my $key = Test::MockObject->new();
$key->mock(use_pkcs1_padding => sub { 1 });
$key->mock(use_sha256_hash => sub { 1 });
$key->mock(sign => sub {
return "signed-claims"
});
return $key;
( run in 0.222 second using v1.01-cache-2.11-cpan-a5abf4f5562 )