AdWords 范围:使用 OAuth 流程进行身份验证后缺少 gapi.client.adwords。找不到要传递给 gapi.client.request() 的路径变量

Posted

技术标签:

【中文标题】AdWords 范围:使用 OAuth 流程进行身份验证后缺少 gapi.client.adwords。找不到要传递给 gapi.client.request() 的路径变量【英文标题】:AdWords Scope: gapi.client.adwords missing after authenticating with OAuth flow. Cannot find path variable to pass to gapi.client.request() 【发布时间】:2020-02-21 22:28:36 【问题描述】:

我关注this guide 创建了一个网络应用流程,用于通过 Google 验证用户身份。

尽管在范围参数中列出了https://www.googleapis.com/auth/adwords,但身份验证完成后我没有得到gapi.client.adwords 或类似的东西。 我无法检索有关用户的 MCC/AdWords/Ad Manager 帐户的任何信息。

我已尝试使用 gapi.client.request(),但似乎找不到访问 AdWords API 应传递的参数。

我正在尝试做这样的事情:

let __req = gapi.client.request(
  method: "GET",
  path: "/adwords/v?/???",
  params:  fields: "???" 
);

__req.execute(function(response) 
  console.log(response);
);

...或者像这样:

console.log(gapi.client.adwords)

但我不知道需要传递给gapi.client.request 的内容,而gapi.client.adwords 不存在。

有没有可能我没有传递discoveryDoc 或类似的东西? AdWords 的discoveryDoc 在哪里

scope:
  "https://www.googleapis.com/auth/adwords",
discoveryDocs: ["???"]

用例:我正在尝试获取与经过身份验证的用户关联(或拥有)的 MCC/AdWords/Ad Manager 帐户(特别是其 ID 和名称)的列表。

提前致谢!

【问题讨论】:

【参考方案1】:

Google Ads / Adwords API 与许多其他 Google 界面有很大不同,因为它不对公众开放,也无法通过“普通”API client libraries 访问。

为了与 Ads API(旧版 Adwords API 也是如此)交互并访问生产帐户,您需要出示有效的开发者令牌。要获得一个,您需要以described here 注册访问权限。请注意,您将立即获得开发者令牌,但您只能在您的应用程序通过验证之前访问test accounts。

获得开发者令牌后,建议使用官方客户端库:

Ads API client libraries(基于 REST,目前处于测试阶段,未来将取代 Adwords API) Adwords API(基于 SOAP,仍建议用于生产)

不幸的是,目前这两个 API 都没有提供官方 JS 客户端库。

【讨论】:

我有一个有效的生产开发者令牌,我正在使用服务器端 Node.js 客户端库 github.com/googleapis/google-api-nodejs-client。重要提示:有什么方法可以从 OAuth 流程中实际获取 AdWords 用户的 CCID?我尝试了 Ads API,但由于找不到 JS 客户端库的任何文档,我无法让它工作,但是,我能够在 NPMjs.org 上找到一个 Node 包装器,这就是我目前正在使用的:npmjs.com/package/node-adwords 如果广告 API 是基于 REST 的,那么必须有某种端点来检索用户的 CCID,或者可能有一个 AdWords 范围的客户端,可以通过编程方式为我提供用户的 CCID .同样,我可以尝试切换到 Ads API(而不是 AdWords API),但是否可以从该 API 获取数据? 我想像 OAuth flow > refresh token > Ads API getAccounts() 或类似的东西 @ihodonald,OAuth 流程不会为您提供帐户 ID。在 Ads API 中,您需要为此使用 CustomerService.ListAccessibleCustomers 函数。对于 Adwords API,它是 CustomerService.getCustomers 非常感谢!我知道我只是错过了一些东西!

以上是关于AdWords 范围:使用 OAuth 流程进行身份验证后缺少 gapi.client.adwords。找不到要传递给 gapi.client.request() 的路径变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 suds 在 Python 中使用 OAuth2 进行 Google Adwords API 身份验证

Google Adwords API with OAuth2 如何获取授权用户的电子邮件?

使用 OAuth 创建 google adwords API 应用程序

无法使用 OAuth2 为 AdWords 帐户生成刷新令牌

将授权机制 ClientLogin 迁移到 OAuth2 Google AdWords v201206 Perl

如何将 OAuth 与 Google AdWords / AdSense API 一起使用?