使用 Google AdWords API 设置 oAuth

Setting up oAuth with the Google AdWords API

我正在尝试在使用 Google AdWords API.

的 Rails 项目上获得 Ruby

到目前为止,我按照 this guide 中的步骤做了什么:

然而,自从编写了指南(并且制作了指南的 video version)之后,界面似乎发生了变化。我能够创建客户端 ID client_secrets.json 文件或服务帐户 .json 文件。我能够导出这些并从 .

读取设置

现在,在尝试连接时,我得到了 AdwordsAPIException AuthenticationError.NOT_ADS_USER

因此我知道实际的 身份验证 有效。然而,授权没有。

如何启用 AdWords API 对来自我的 google 帐户的 oAuth 凭据的支持? Google 凭据控制台列出了许多您可以打开的 API,但 AdWords API 不在其中。 AdWords guide根本没有提到打开API,只告诉你创建一个新的Credential。

这是怎么回事?

不需要将Adwords API添加到您在Google云控制台中的项目中(它始终处于启用状态)-如错误消息所示,实际问题在于您的服务帐户 无权访问 任何 Adwords 帐户。

事实上,使用服务帐户对 Adwords API 进行身份验证的唯一方法是当您还使用 G Suite 域时(请参阅 the corresponding documentation, section "Prerequisites"

如果您有 G Suite 域,则需要

  • 在您的服务帐户密钥上启用 "G Suite Domain-wide Delegation"

  • 将 Google 云项目的项目 ID 添加到您的 G Suite 域的授权 API 客户列表

  • 使用您的服务帐户模拟您 G Suite 域中具有 Adwords 访问权限的任何用户

如您所见,这是一个非常复杂的过程。我的建议(由上述文章分享)是对具有 Adwords 访问权限的任何用户使用 OAuth2 installed application flow。这需要在您的端存储获得的刷新令牌,但比启用委托的服务帐户更灵活(并且可以说更安全)并且更容易设置。