2012-03-21 195 views
1

我一直在運行這個可怕的OAuth驗證失敗,它似乎不想給我一個身份驗證令牌......?Ruby谷歌Adwords 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: 
:method: OAuth 
:oauth_consumer_key: anonymous 
:oauth_consumer_secret: anonymous 
:developer_token: [email protected]++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>' 

到底是怎麼回事?這是不是足夠的adwords沙箱api?

謝謝。

回答

1

我仍然不確定OAuth出現了什麼問題,但我發現如何在沙盒中使用「ClientLogin」,並且工作得很好。所需要的只是將我的adwords_api.yml配置爲

:authentication: 
:method: ClientLogin 
:password: PASSWORD_GOES_HERE 
:email: EMAIL_GOES_HERE 
:developer_token: [email protected]++USD 
:user_agent: Ruby Testing 
:service: 
    :environment: SANDBOX 
:connection: 
    :enable_gzip: false 
    :library: 
    :log_level: INFO 
+1

非常感謝上述代碼。該文檔聲明運行get_campaigns.rb示例(google-api-ads-ruby/adwords_api/examples/v201206/basic_operations),但是他們沒有告訴您的是您應該選擇一個像上面所述的配置。一旦運行了get_campaign示例,就可以運行它們的adwords_on_rails示例(這將需要記錄的OAuth2配置)。多麼糟糕,沒有組織的混亂。沒有讓Google印象深刻。 – aantix 2012-10-06 06:00:54