Ruby on rails 使用OmniAuth刷新令牌访问Google DFP API
我正在开发一个rails应用程序,在这里我需要访问用户Google双击发布者数据。我使用的是“谷歌DFPAPI”gem。我已经为用户设置了OmniAuth来验证他们的DFP帐户,并根据google文档()存储刷新令牌。我不知道如何使用刷新令牌访问DFPAPI 我正在尝试建立如下所示的连接:Ruby on rails 使用OmniAuth刷新令牌访问Google DFP API,ruby-on-rails,omniauth,google-dfp,Ruby On Rails,Omniauth,Google Dfp,我正在开发一个rails应用程序,在这里我需要访问用户Google双击发布者数据。我使用的是“谷歌DFPAPI”gem。我已经为用户设置了OmniAuth来验证他们的DFP帐户,并根据google文档()存储刷新令牌。我不知道如何使用刷新令牌访问DFPAPI 我正在尝试建立如下所示的连接: dfp = DfpApi::Api.new({ :authentication => { :method => 'OAuth2', :oauth2_cl
dfp = DfpApi::Api.new({
:authentication => {
:method => 'OAuth2',
:oauth2_client_id => GOOGLE_CLIENT_ID,
:oauth2_client_secret => GOOGLE_CLIENT_SECRET,
:user_agent => USER_AGENT,
:application_name => APP_NAME,
:oauth2_token => {
:refresh_token => GOOGLE_DFP_REFRESH_TOKEN
}
},
:service => {
:environment => 'PRODUCTION'
}
})
在此之后,每当我尝试进行查询时,都会出现以下错误:
DfpApi::V201411::UserService::ApiException: [AuthenticationError.AUTHENTICATION_FAILED @ ]
如果不使用刷新令牌访问api,请使用访问令牌。在我打电话之前,我正在刷新访问令牌 刷新您的令牌:
def refresh_access_token
refresh_token = self.refresh_token
google_refresh_url = "https://accounts.google.com/o/oauth2/token"
response = RestClient.post google_refresh_url, :grant_type => 'refresh_token', :refresh_token => refresh_token, :client_id => ENV['GOOGLE_CLIENT_ID'], :client_secret => ENV['GOOGLE_CLIENT_SECRET']
response_hashed = JSON.parse(response)
new_access_token = response_hashed['access_token']
self.save_new_access_token(new_access_token)
end
然后OAuth DFP API哈希应如下所示:
@api = DfpApi::Api.new({
:authentication => {
:method => 'OAuth2',
:oauth2_client_id => ENV['GOOGLE_CLIENT_ID'],
:oauth2_client_secret => ENV['GOOGLE_CLIENT_SECRET'],
:application_name => ENV['GOOGLE_APP_NAME'],
:client_customer_id => google_dfp_credential.google_client_customer_id,
:network_code => google_dfp_credential.network_code,
:user_agent => ENV['GOOGLE_DFP_USER_AGENT'],
:oauth2_token => {
:access_token => google_dfp_credential.access_token,
},
},
:service => {
:environment => 'PRODUCTION'
}
})
用户代理是应用程序的唯一字符串,每次访问api时都应该是相同的。有关更多信息,请参阅下面的链接:
您还需要通过手动登录dfp帐户,从正在访问的dfp帐户获取网络_代码。据我所知,这不是通过OAuth身份验证返回的。有关如何获取网络代码的更多信息,请参阅下面链接中的步骤2:
嘿,你解决了你的问题吗,我也遇到了同样的错误