将授权机制ClientLogin迁移到OAuth2 Google AdWords v201206 Perl

时间:2012-09-26 00:00:53

标签: perl authorization oauth-2.0 google-adwords

所以我以前在Google AdWords API中使用ClientLogin进行授权,但在查看AuthForInstalledApps之后,它说该机制已被弃用,而不是OAuth2.0

我已在API Consoles注册了我的申请。现在我试图遵循如何设置它的perl示例:

use_oauth2.pl

我无法在~/adwords.properties中放置AdWords客户端凭据,因为我有多个帐户,我将对其进行广告系列管理操作,因此会有多个客户ID。

但是现在我试图通过使用我的客户端信息之一来跟随这个例子:

my $client = Google::Ads::AdWords::Client->new(
    {
        version  => 'v201206',
        developer_token => TOKEN,
        client_id => $google_account_id
    }
);

$client->get_auth_token_handler()->set_email($login);
$client->get_auth_token_handler()->set_password($password);

但是,当我逐步执行此操作时,当它尝试初始化Client对象时,会抛出此错误:

Can't use an undefined value as a HASH reference at (eval 845)[/usr/lib/perl5/vendor_perl/5.8.8/HTTP/Message.pm:371] line 1. at (eval 845)[/usr/lib/perl5/vendor_perl/5.8.8/HTTP/Message.pm:371] line 1
HTTP::Message::__ANON__[(eval 845)[/usr/lib/perl5/vendor_perl/5.8.8/HTTP/Message.pm:371]:1]() called at /home/etienne/backend/libs/Google/Ads/Common/HTTPTransport.pm line 30
Google::Ads::Common::HTTPTransport::client('Google::Ads::Common::HTTPTransport=HASH(0xb59b830)', 'Google::Ads::AdWords::Client=SCALAR(0x9b9bb60)') called at /home/etienne/backend/libs Google/Ads/AdWords/Client.pm line 180
Google::Ads::AdWords::Client::START('Google::Ads::AdWords::Client=SCALAR(0x9b9bb60)', 1, 'HASH(0xb582e70)') called at /usr/lib/perl5/site_perl/5.8.8/Class/Std/Fast.pm line 251
Class::Std::Fast::__ANON__[/usr/lib/perl5/site_perl/5.8.8/Class/Std/Fast.pm:252]() called at /usr/lib/perl5/site_perl/5.8.8/Class/Std/Fast.pm line 287
Class::Std::Fast::new('Google::Ads::AdWords::Client', 'HASH(0xb54c210)') called at /home/etienne/backend/search_marketing/data_exchange/lib/GoogleAPIv2.pm line 3555
GoogleAPIv2::get_adwords_client('GoogleAPIv2=HASH(0xb556d10)', 4202697829) called at /home/etienne/backend/search_marketing/data_exchange/lib/GoogleAPIv2.pm line 230
GoogleAPIv2::add_campaign('GoogleAPIv2=HASH(0xb556d10)', 'name', 'API Upgrade Test Campaign - 1348613850', 'google_account_id', 4202697829, 'account_id', 207, 'country_code', 'US', ...) called at google_add_campaign.t line 110
main::main() called at google_add_campaign.t line 26
scalar context return from CODE(0x9b909c0): *Class::Std::Fast::_cache
1..3

我正在使用Perl v5.8.8。我安装了最新的Adwords Perl Client Library v2.7.2。是否存在某种依赖性问题? 我该如何解决这个问题呢?您可以提供的任何信息都非常有用。感谢。

1 个答案:

答案 0 :(得分:0)

看起来我只需要安装最新的HTTP/Message.pm v6.0.3模块,因为我安装的版本没有传递给{{1的方法decode() AUTOLOAD()模块中的子例程。