Свяжите аккаунт AdWords с аккаунтом MCC, AdWords API, NodeJs
Я пытаюсь привязать учетную запись Adwords к учетной записи MCC с помощью пакета Node Adwords NPM
- У меня есть МЕНЕДЖЕР / Администратор доступ к обеим учетным записям (не один и тот же адрес электронной почты)
- Я создал проект / приложение на консоли разработчика Google, чтобы получить
Client_ID и Client_Secret, используя пользователя электронной почты MCC. - Я восстановил токен доступа / обновил токен, используя вышеуказанные учетные данные
- Теперь используется рабочий токен разработчика со стандартным доступом, Client_ID, Client_Secret, Refresh_Token, Access_Token и ClientCustomerID
Я получаю токен обновления, используя процесс SSO Passport OAuth2.
Клиент должен войти в систему через наше веб-приложение, после успешного входа в систему мы получаем его 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 ответ
Чтобы отправить приглашение на аккаунт AdWords от MCC:
Вы должны создать client_id и client_secret с тем же администратором / менеджером в вашем MCC
Сгенерируйте токены OAuth2 с одним и тем же пользователем с областью действия AdWords (менеджер вашего MCC)
Звоните со своей учетной записью 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'
}
}]
Чтобы принять приглашение в учетной записи клиента:
Генерация токенов OAuth2 с клиентским пользователем
Выполните вызов с помощью учетной записи 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'
}
}]