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 APIgetAccounts()
或类似的东西
@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 帐户生成刷新令牌