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

Google AdWords API AuthorizationError.SERVICE_ACCESS_DENIED

在 AdWords 数据传输到 BigQuery 后查看 MCC 帐户的汇总数据

显示无效的 google adwords 帐户错误

一个 Adwords API 开发人员令牌可用于多个帐户?