AdWords API:非 MCC 帐户的客户列表
Posted
技术标签:
【中文标题】AdWords API:非 MCC 帐户的客户列表【英文标题】:AdWords API : client list for non MCC account 【发布时间】:2012-03-30 08:44:34 【问题描述】:我想获取分配给经过身份验证的帐户的 AdWords 客户列表(我使用 OAuth)。
第一次尝试是使用 ServicedAccountService 和这个 XML 请求
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<RequestHeader xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
<developerToken xmlns="https://adwords.google.com/api/adwords/mcm/v201109">[[DEV_TOKEN]]</developerToken>
</RequestHeader>
</soap:Header>
<soap:Body>
<get xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
<selector>
<enablePaging>false</enablePaging>
</selector>
</get>
</soap:Body>
</soap:Envelope>
但它仅适用于 MCC 帐户。对于普通的谷歌帐户,我得到了空数据集
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
<ns2:requestId>0004bc71cee633d00aecb0aa000060ca</ns2:requestId>
<ns2:serviceName>ServicedAccountService</ns2:serviceName>
<ns2:methodName>get</ns2:methodName>
<ns2:operations>0</ns2:operations>
<ns2:responseTime>230</ns2:responseTime>
<ns2:units>0</ns2:units>
</ResponseHeader>
</soap:Header>
<soap:Body>
<getResponse xmlns="https://adwords.google.com/api/adwords/mcm/v201109" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109">
<rval>
<accounts>
<customerId>0</customerId>
<canManageClients>false</canManageClients>
</accounts>
</rval>
</getResponse>
</soap:Body>
</soap:Envelope>
我搜索了很多,最后@987654321@ 我可以为 MCC 和非 MCC 帐户使用其他 XML (InfoService)。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<RequestHeader xmlns="https://adwords.google.com/api/adwords/info/v201109">
<developerToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[DEV_TOKEN]]</developerToken>
</RequestHeader>
</soap:Header>
<soap:Body>
<get xmlns="https://adwords.google.com/api/adwords/info/v201109">
<selector>
<dateRange>
<min xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[START_DATE]]</min>
<max xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[END_DATE]]</max>
</dateRange>
<includeSubAccounts>true</includeSubAccounts>
<apiUsageType>UNIT_COUNT_FOR_CLIENTS</apiUsageType>
</selector>
</get>
</soap:Body>
</soap:Envelope>
但返回的数据不正确 - 并未列出所有帐户。或者根本没有返回数据。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/info/v201109">
<ns2:requestId>0004bc7121a910e80a97030d000051e7</ns2:requestId>
<ns2:serviceName>InfoService</ns2:serviceName>
<ns2:methodName>get</ns2:methodName>
<ns2:operations>1</ns2:operations>
<ns2:responseTime>1206</ns2:responseTime>
<ns2:units>1</ns2:units>
</ResponseHeader>
</soap:Header>
<soap:Body>
<getResponse xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/info/v201109">
<rval>
<cost>0</cost>
</rval>
</getResponse>
</soap:Body>
</soap:Envelope>
还有其他方法可以获取 AdWords 帐户的客户列表吗?非常感谢。
【问题讨论】:
【参考方案1】:我也遇到过这个问题,可以确认不是ServicedAccountService的正确行为;这是"known issue that will be resolved in future":如果您将您的基本帐户链接到 MCC,那么您可以使用基本帐户进行身份验证并使用 ServicedAccountService 获取帐户详细信息,但如果该帐户未链接,则会出现此问题。
如果你只是想获取一个账户的客户ID,你也可以使用InfoService,不会遇到同样的问题。
【讨论】:
我的问题中的最后一个 xml 是 InfoService 的回复。它也工作不正确 - 它不显示所有帐户,只显示通过 API 访问的帐户,这不是我想要达到的。 MCC账户需要使用ServicedAccountService,普通账户需要使用InfoService。我首先调用 ServicedAccountService,然后如果 id 字段中的值为零,则调用 InfoService。在 Google 解决问题之前,这只是一种解决方法。以上是关于AdWords API:非 MCC 帐户的客户列表的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 adwords 帐户客户客户 ID 以将其链接到 MCC 帐户?
Google AdWords API AuthorizationError.SERVICE_ACCESS_DENIED