Google AdWords API 授权提升 Ads Common::Errors::AuthError

Posted

技术标签:

【中文标题】Google AdWords API 授权提升 Ads Common::Errors::AuthError【英文标题】:Google AdWords API autorization raising AdsCommon::Errors::AuthError 【发布时间】:2015-01-06 18:46:00 【问题描述】:

我在 Rails 应用程序中配置了 Google 登录,登录工作正常,但是当我尝试自动化 AdWords API 以获取令牌时,引发异常

AdsCommon::Errors::AuthError Authorization error occured: Authorization failed. 
Server message: 
"error" : "invalid_grant", "error_description" : "Code was already redeemed."

这是自动化的一部分

def google_oauth2_callback
  api = AdwordsApi::Api.new(Rails.application.config_for(:adwords_api))
  session[:token] = api.authorize \
    oauth2_callback: user_omniauth_callback_url(:google_oauth2),
    oauth2_verification_code: params[:code]

我用于登录: 设计+omniauth-google-oauth2

我还添加了 adwords 范围

【问题讨论】:

【参考方案1】:

见:https://groups.google.com/forum/#!topic/adwords-api/1J8n4bUnyh4

如果您使用 3rd 方库来获取访问和刷新令牌,您 不需要再次使用验证码(已经使用过,没有 有效期更长)。

相反,将刷新令牌直接传递给库:

token = :access_token=>"AbCdEf", :refresh_token=>"gHiJkL", :issued_at=>(发布时间访问令牌), :expires_in=>3600 adwords.authorize(:oauth2_token => token)

请注意,您不需要提供范围,因为它已经由 你有omniauth。

【讨论】:

好的,但是我如何获得access_tokenrefresh_token?通过adwords on rails 示例,我使用code 返回回调url 的参数来授权api

以上是关于Google AdWords API 授权提升 Ads Common::Errors::AuthError的主要内容,如果未能解决你的问题,请参考以下文章

使用 suds 在 Python 中使用 OAuth2 进行 Google Adwords API 身份验证

google adwords api 与 google-adwords-api gem

以编程方式获取 Google Adwords 开发者令牌

与链接到 Google Adwords 帐户的 Google Analytics API 相比,Google Adwords API 报告可以获得多少?

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

Google Adwords API 响应解析