【问题标题】:Google AdWords API autorization raising AdsCommon::Errors::AuthErrorGoogle AdWords API 授权提升 Ads Common::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 范围

【问题讨论】:

    标签: ruby-on-rails-4 oauth-2.0 google-oauth google-ads-api


    【解决方案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_token 和refresh_token?通过adwords on rails 示例,我使用code 返回回调url 的参数来授权api
    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    相关资源
    最近更新 更多