Сбой XML-запроса AdWords к ManagedCustomerService

Я работаю с https://adwords.google.com/api/adwords/mcm/v201402/ManagedCustomerService и хочу получить иерархию аккаунтов.

Запросы выполняются в необработанном XML (контролируемом JScript) - я знаю, что это немного извращенно, но это ситуация.

Я сгенерировал следующий SOAP-пакет

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <ns1:RequestHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns1="https://adwords.google.com/api/adwords/mcm/v201402">
            <ns1:clientCustomerId>some_ccid</ns1:clientCustomerId>
            <ns1:developerToken>some_developer_token</ns1:developerToken>
            <ns1:userAgent>GAS</ns1:userAgent>
            <ns1:validateOnly>false</ns1:validateOnly>
            <ns1:partialFailure>false</ns1:partialFailure>
        </ns1:RequestHeader>
    </soapenv:Header>
    <soapenv:Body>
        <get xmlns="https://adwords.google.com/api/adwords/mcm/v201402">
            <serviceSelector>
                <fields>Login</fields>
                <fields>Customer</fields>
                <fields>Name</fields>
                <predicate>
                    <field>id</field>
                    <operator>GREATER_THAN</operator>
                    <values>0</values>
                </predicate>
            </serviceSelector>
        </get>
    </soapenv:Body>
</soapenv:Envelope>

Пожалуйста, обратите внимание на idGREATER_THAN0. Это мой наивный способ получить все.

Я заметил, что PHP GetAccountHierarchy.php имеет

// Create selector.
$selector = new Selector();
// Specify the fields to retrieve.
$selector->fields = array('Login', 'CustomerId',  'Name');

// Make the get request.
$graph = $managedCustomerService->get($selector);

Казалось бы, это означает, что предикат не был определен. Тем не менее, я немного опасаюсь делать это, потому что документация говорит (да, я действительно читаю дружественное руководство), "предикаты ContentsNotNull"

Ответ я получаю

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201402" xmlns="https://adwords.google.com/api/adwords/cm/v201402">
            <requestId>0004f553e08eaca00abc25900000893f</requestId>
            <serviceName>ManagedCustomerService</serviceName>
            <methodName>get</methodName>
            <operations>0</operations>
            <responseTime>141</responseTime>
        </ns2:ResponseHeader>
    </soap:Header>
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
            <faultstring>[QuotaCheckError.INVALID_TOKEN_HEADER @ ]</faultstring>
            <detail>
                <ns2:ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/cm/v201402" xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201402">
                    <message>[QuotaCheckError.INVALID_TOKEN_HEADER @ ]</message>
                    <ApplicationException.Type>ApiException</ApplicationException.Type>
                    <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="QuotaCheckError">
                        <fieldPath/>
                        <trigger/>
                        <errorString>QuotaCheckError.INVALID_TOKEN_HEADER</errorString>
                        <ApiError.Type>QuotaCheckError</ApiError.Type>
                        <reason>INVALID_TOKEN_HEADER</reason>
                    </errors>
                </ns2:ApiExceptionFault>
            </detail>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

Что я делаю неправильно, чтобы получить такой ответ?

Кстати, если я пропущу предикат или укажу его с нулевым содержимым, я все равно получу ошибку QuotaCheckError.INVALID_TOKEN_HEADER.

1 ответ

Решение

Решение было предоставлено в группе Google AdWords API. Работаю хорошо сейчас!

Другие вопросы по тегам