我正试图获得一个使用Google AdWords API的Ruby on Rails项目。
到目前为止,我按照this guide中的步骤进行了操作:
但是,由于编写了指南(并且指南的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,只会告诉您创建新的凭据。
这里发生了什么?
答案 0 :(得分:2)
Adwords API不需要在Google云端控制台中添加到您的项目中(它始终已启用) - 如错误消息所示,实际问题在于您的服务帐户没有访问到任意Adwords帐户。
事实上,使用服务帐户对Adwords API进行身份验证的唯一方法是使用G Suite域时(请参阅the corresponding documentation, section "Prerequisites"。
如果您有G Suite域名,则需要
在您的服务帐户密钥
将Google云项目的项目ID添加到G Suite域的授权API客户列表
使用您的服务帐户模仿您G Suite域中具有Adwords访问权限的任何用户
正如您所看到的,这是一个非常复杂的过程。我的建议(上述文章共享)是对任何具有Adwords访问权限的用户使用OAuth2 installed application flow。这需要将获得的刷新令牌存储在您的最后,但比启用委派的服务帐户更灵活(并且可以说更安全),并且更容易设置。