使用Google AdWords API设置oAuth

时间:2017-04-04 15:11:50

标签: oauth google-api google-adwords google-api-ruby-client

我正试图获得一个使用Google AdWords API的Ruby on Rails项目。

到目前为止,我按照this guide中的步骤进行了操作:

  • 我创建了一个AdWords经理帐户。
  • 我创建了一个属于AdWords经理帐户的测试帐户。
  • 我在Rails项目中设置了Ruby客户端库。
  • 然后,我尝试使用指南中的example code设置OAuth2身份验证。

但是,由于编写了指南(并且指南的video version已经完成),所以界面似乎已经改变了。我能够创建客户端ID client_secrets.json - 文件或服务帐户.json文件。我可以导出这些并从中读取设置。

  • 我使用OAUTH2_SERVICE_ACCOUNT .json文件添加了所需的设置。

现在,在尝试连接时,我收回了AdwordsAPIException AuthenticationError.NOT_ADS_USER

因此我知道实际的身份验证有效。但是,授权不会。

如何从我的Google帐户启用oAuth凭据的AdWords API支持? Google凭据控制台列出了许多可以启用的API,但AdWords API不在此处。 AdWords guide根本没有提及启用API,只会告诉您创建新的凭据。

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

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。这需要将获得的刷新令牌存储在您的最后,但比启用委派的服务帐户更灵活(并且可以说更安全),并且更容易设置。