1

给定

我正在开发两个使用相同 AdWords API 访问凭据的不同应用程序。Bot 应用程序仅用于从 API 收集/分析数据。

应用程序#1 和#2 大约需要 1 小时来完成从 API 获取/分析数据的过程。

我正在使用:

  1. 我自己的 AdWords 帐户,
  2. ClientLogin认证方式,
  3. 红宝石语言。

问题

有时两个时间范围(对于应用程序 #1 和 #2)可能会重叠,我开始收到大量这些错误:

AdwordsApi::Errors::ReportXmlError: HTTP code: 400, error type: 'AuthorizationError.USER_PERMISSION_DENIED'

接下来的一系列事件导致了一个问题:

  1. 应用 #1 向 Google 请求身份验证令牌,并在收到后将其缓存,
  2. App #1 使用令牌开始数据摄取过程,
  3. 应用 #2 向 Google 请求身份验证令牌,并在收到后将其缓存,
  4. App #2 使用令牌开始数据摄取过程,
  5. 应用 #1 向 AdWords API 请求另一部分数据,但由于第 3 项,应用 1 的身份验证令牌无效,并且由于上述错误,应用开始阻塞。

所以问题是:有没有办法进行这样的设置,以使两个应用程序同时访问 AdWords API 而没有令牌干扰/失效

4

1 回答 1

1

我们有许多应用程序遵循您所描述的相同模式,但我们没有遇到令牌失效的情况。

AdwordsApi::Api.new(credentials).authorize

我们缓存那里返回的令牌,然后将其重新用于后续请求,但我们使用的凭据由许多应用程序共享,令牌仅由一个应用程序使用。我们将其缓存 12 小时,然后将其过期,从而发出新的。

于 2013-01-04T14:48:29.960 回答