Свяжите аккаунт AdWords с аккаунтом MCC, AdWords API, NodeJs - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь привязать учетную запись Adwords к учетной записи MCC, используя Узел Adwords Пакет NPM

  1. У меня есть МЕНЕДЖЕР / Доступ администратора к обеим учетным записям (не один и тот же адрес электронной почты)
  2. Я создал проект / приложение на консоли разработчика Google, чтобы получить
    Client_ID и Client_Secret с использованием пользователя электронной почты MCC.
  3. Я восстановил токен доступа / токен обновления, используя вышеуказанные учетные данные
  4. Теперь используется рабочий токен разработчика со стандартным доступом, Client_ID , Client_Secret , Refresh_Token , Access_Token и ClientCustomerID

Я получаю токен обновления, используя Passport OAuth2 SSO-процесс.

Клиент должен войти в систему через наше веб-приложение, после успешного входа в систему мы получаем его access_token & refresh_token, затем мы приглашаем его управлять нашей учетной записью MCC, однако запрос не выполняется и выдается сообщение о несанкционированном доступе.

Что я делаю не так?

1-SOAP Ответ

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
      <ns2:ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802" xmlns="https://adwords.google.com/api/adwords/cm/v201802">
         <requestId>000579c3b56e65c00a85859ae60c1a37</requestId>
         <serviceName>ManagedCustomerService</serviceName>
         <methodName>mutateLink</methodName>
         <operations>1</operations>
         <responseTime>173</responseTime>
      </ns2:ResponseHeader>
   </soap:Header>
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Server</faultcode>
         <faultstring>[ManagedCustomerServiceError.NOT_AUTHORIZED @ operations[0]]</faultstring>
         <detail>
            <ns2:ApiExceptionFault xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802" xmlns="https://adwords.google.com/api/adwords/cm/v201802">
               <message>[ManagedCustomerServiceError.NOT_AUTHORIZED @ operations[0]]</message>
               <ApplicationException.Type>ApiException</ApplicationException.Type>
               <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManagedCustomerServiceError">
                  <fieldPath>operations[0]</fieldPath>
                  <fieldPathElements>
                     <field>operations</field>
                     <index>0</index>
                  </fieldPathElements>
                  <trigger />
                  <errorString>ManagedCustomerServiceError.NOT_AUTHORIZED</errorString>
                  <ApiError.Type>ManagedCustomerServiceError</ApiError.Type>
                  <ns2:reason>NOT_AUTHORIZED</ns2:reason>
               </errors>
            </ns2:ApiExceptionFault>
         </detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

2- Код образца узла

const adwordsUser = new AdwordsUser({
            developerToken: 'DEVToken',
            userAgent: 'App Name',
            client_id: 'CLIENT_ID',
            client_secret: 'CLIENT_SECRET',
            refresh_token: 'REFRESH_TOKEN',
            clientCustomerId: 'AdwordsAccountID'
        });
        customerService = adwordsUser.getService('ManagedCustomerService', null);

    customerService.mutateLink({
        operations: [
            {
                operator: 'ADD',
                operand: {
                    managerCustomerId: 'MCCAccountCustomerID',
                    clientCustomerId: 'AdwordsAccountID',
                    linkStatus: 'PENDING'
                }
            }
        ]
    }, function (err, result) {
        if (err) console.log(err)
        console.log(result)
    })

1 Ответ

0 голосов
/ 23 ноября 2018

Чтобы отправить приглашение на аккаунт AdWords из MCC:

  1. Вы должны создать client_id и client_secret с одним и тем же администратором / менеджером в вашем MCC

  2. Создание токенов OAuth2 для одного и того же пользователя с областью действия AdWords (менеджер вашего MCC)

  3. Сделайте ваш звонок с вашей учетной записью MCC (вы можете использовать токен разработчика из любого MCC, это не имеет значения)

  const adwordsUser = new AdwordsUser({
        developerToken: 'DEVToken',
        userAgent: 'App Name',
        client_id: 'CLIENT_ID',
        client_secret: 'CLIENT_SECRET',
        refresh_token: 'REFRESH_TOKEN',
    });
 adwordsUser.credentials.clientCustomerId = 'MCCAccountCustomerID';
 customerService = adwordsUser.getService('ManagedCustomerService', null);
 operations: [{
                    operator: 'ADD',
                    operand: {
                        managerCustomerId: 'MCCAccountCustomerID',
                        clientCustomerId: 'AdwordsAccountID', // Account to invite
                        linkStatus: 'PENDING'
                    }
                }]

Чтобы принять приглашение на счет клиента:

  1. Создание токенов OAuth2 с клиентским пользователем

  2. Выполните вызов с помощью учетной записи adwords клиента, статуса активной ссылки и SET в качестве оператора

const adwordsUser = new AdwordsUser({
        developerToken: 'DEVToken',
        userAgent: 'App Name',
        client_id: 'CLIENT_ID',
        client_secret: 'CLIENT_SECRET',
        refresh_token: 'REFRESH_TOKEN',
    });
 adwordsUser.credentials.clientCustomerId = 'AdwordsAccountID'; // invited account id
 customerService = adwordsUser.getService('ManagedCustomerService', null);
 operations: [{
                operator: 'SET',
                operand: {
                    managerCustomerId: 'MCCAccountCustomerID',
                    clientCustomerId: 'AdwordsAccountID',
                    linkStatus: 'ACTIVE'
                }
            }]
...