Ruby Google Adwords Api OAuth验证失败

Ruby Google Adwords Api OAuth验证失败,oauth,google-ads-api,Oauth,Google Ads Api,我一直遇到这个可怕的OAuth验证失败,它似乎不想给我一个身份验证令牌 这是我的app.rb: require 'adwords_api' require 'adwords_api/utils' adwords = AdwordsApi::Api.new campaign_srv = adwords.service(:CampaignService, :v201109) campaign_srv.get 这是我的adwords_api.yml: :authentication: :meth

我一直遇到这个可怕的OAuth验证失败,它似乎不想给我一个身份验证令牌

这是我的app.rb:

require 'adwords_api'
require 'adwords_api/utils'

adwords = AdwordsApi::Api.new
campaign_srv = adwords.service(:CampaignService, :v201109)
campaign_srv.get
这是我的adwords_api.yml:

:authentication:
 :method: OAuth
 :oauth_consumer_key: anonymous
 :oauth_consumer_secret: anonymous
 :developer_token: email@gmail.com++USD
 :user_agent: Ruby Testing
:service:
  :environment: SANDBOX
:connection:
  :enable_gzip: false
  :library:
  :log_level: INFO
每次运行应用程序时,我都会出现以下错误:

/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/auth/oauth_handler.rb:271:in `raise_oauth_verification_error': AdsCommon::Errors::OAuthVerificationRequired (AdsCommon::Errors::OAuthVerificationRequired)
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/auth/oauth_handler.rb:237:in `generate_access_token'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/auth/oauth_handler.rb:181:in `create_token'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/auth/base_handler.rb:62:in `get_token'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/auth/oauth_handler.rb:92:in `headers'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_headers/oauth_header_handler.rb:59:in `generate_headers'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_headers/oauth_header_handler.rb:42:in `prepare_request'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:106:in `block in set_headers'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:105:in `each'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:105:in `set_headers'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:98:in `block in execute_soap_request'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:153:in `yield_objects'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:147:in `process'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:76:in `request'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:97:in `execute_soap_request'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:80:in `execute_action'
from /Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-adwords-api-0.5.2/lib/adwords_api/v201109/campaign_service.rb:19:in `get'
from app.rb:12:in `<main>'
/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/auth/oauth\u handler.rb:271:in'raise\u oauth\u verification\u error':AdsCommon::Errors::OAuthVerificationRequired(AdsCommon::Errors::OAuthVerificationRequired)
来自/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/auth/oauth\u handler.rb:237:“生成访问令牌”中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/auth/oauth\u handler.rb:181:在“创建令牌”中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/auth/base\u handler.rb:62:in'get\u token'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/auth/oauth\u handler.rb:92:in'headers'
来自/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u headers/oauth\u header\u handler.rb:59:in“generate\u headers”
来自/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u headers/oauth\u header\u handler.rb:42:“准备请求”中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u service.rb:106:in`block in set\u headers'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads_common/savon_service.rb:105:in'each'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u service.rb:105:in'set\u headers'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u service.rb:98:在“执行soap\u请求中的块”中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:153:in“yield\u objects”
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:147:正在进行中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/savon-0.9.9/lib/savon/client.rb:76:在“请求”中
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u service.rb:97:in'execute\u soap\u request'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-ads-common-0.6.3/lib/ads\u common/savon\u service.rb:80:in'execute\u action'
from/Users/Qubit/.rvm/gems/ruby-1.9.2-p290/gems/google-adwords-api-0.5.2/lib/adwords\u-api/v201109/campaign\u service.rb:19:in'get'
来自app.rb:12:in`'
发生了什么事?对于adwords沙盒api来说,这还不够吗


谢谢。

我仍然不确定OAuth的问题是什么,但我发现了如何在沙箱中使用“ClientLogin”,而且效果很好。只需将我的adwords_api.yml配置为

:authentication:
 :method: ClientLogin
 :password: PASSWORD_GOES_HERE
 :email: EMAIL_GOES_HERE
 :developer_token: email@gmail.com++USD
 :user_agent: Ruby Testing
:service:
  :environment: SANDBOX
:connection:
  :enable_gzip: false
  :library:
  :log_level: INFO

我仍然不确定OAuth的问题是什么,但是我发现了如何在沙箱中使用'ClientLogin',这很好。只需将我的adwords_api.yml配置为

:authentication:
 :method: ClientLogin
 :password: PASSWORD_GOES_HERE
 :email: EMAIL_GOES_HERE
 :developer_token: email@gmail.com++USD
 :user_agent: Ruby Testing
:service:
  :environment: SANDBOX
:connection:
  :enable_gzip: false
  :library:
  :log_level: INFO

非常感谢您提供上述代码。文档声明要运行get_campaigns.rb示例(google api ads ruby/adwords_api/examples/v201206/basic_operations),但它们没有告诉您的是,您应该选择上面所述的配置。一旦运行了get_活动示例,就可以运行他们的adwords_on_rails示例(这将需要文档化的OAuth2配置)。多么杂乱无章的混乱啊。没有给谷歌留下深刻印象。非常感谢上面的代码。文档声明要运行get_campaigns.rb示例(google api ads ruby/adwords_api/examples/v201206/basic_operations),但它们没有告诉您的是,您应该选择上面所述的配置。一旦运行了get_活动示例,就可以运行他们的adwords_on_rails示例(这将需要文档化的OAuth2配置)。多么杂乱无章的混乱啊。谷歌对此印象不深。