Недостаточно прав (403) при попытке связать веб-ресурс с аккаунтом AdWords (Google Ads) - PullRequest
0 голосов
/ 08 февраля 2019

Я пытался найти решение для проблемы, которая кажется относительно распространенной при использовании API управления аналитикой, но, к сожалению, ни один из ответов не помог.

Я начинаю использовать API управления аналитикой с учетной записью службы, котораяимеет полный доступ к моей учетной записи Google Analytics.Ему были предоставлены разрешения «Редактировать, сотрудничать, читать и анализировать и управлять пользователями» на уровне учетной записи, что означает, что они также наследуются на уровне свойств и уровне просмотра.

Я могу успешно получить учетные записи, к которым у меня есть доступ,и вставьте новые веб-свойства.

Однако я не смог связать свой аккаунт Google Ads с каким-либо веб-ресурсом.Каждый раз, когда я вызываю API, я получаю ошибку 403:

{"error":{"errors":[{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this web property."}],"code":403,"message":"User does not have sufficient permissions for this web property."}}

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

Ниже описано, как я пытаюсь связать аккаунт Google Ads:

<?php
require_once __DIR__ . '/vendor/autoload.php';
$KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';
$client = new Google_Client();
$client->setApplicationName("Hello Analytics Management API");
$client->setAuthConfig($KEY_FILE_LOCATION);
$client->setScopes([
  'https://www.googleapis.com/auth/plus.login',
  'https://www.googleapis.com/auth/analytics',
  'https://www.googleapis.com/auth/analytics.edit',
  'https://www.googleapis.com/auth/analytics.provision',
  'https://www.googleapis.com/auth/analytics.manage.users',
  'https://www.googleapis.com/auth/analytics.readonly'
]);
$analytics = new Google_Service_Analytics($client);
$adWordsAccount = new Google_Service_Analytics_AdWordsAccount();
$adWordsAccount->setCustomerId("XXX-XXX-XXXX");
$adWordsLink = new Google_Service_Analytics_EntityAdWordsLink();
$adWordsLink->setName("TestLink");
$adWordsLink->setAdWordsAccounts([$adWordsAccount]);
try {
  $analytics->management_webPropertyAdWordsLinks->insert(
    999999999, // Analytics Account ID
    "UA-999999999-1", // Tracking ID
    $adWordsLink
  );
} catch (apiServiceException $e) {
  print 'There was an Analytics API service error '
        . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
  print 'There was a general API error '
      . $e->getCode() . ':' . $e->getMessage();
}

Я знаю, что, конечно, я использую больше областей, чем нужно, но использую только https://www.googleapis.com/auth/analytics.edit дает тот же результат.

Ниже приведен service-account-credentials.json, который я использую (с ключом, который я сгенерировал через консоль API Google):

{
  "type": "service_account",
  "project_id": "...-230314",
  "private_key_id": "<PRIVATE_KEY_ID>",
  "private_key": "<PRIVATE_KEY>",
  "client_email": "dev-...@ga-....iam.gserviceaccount.com",
  "client_id": "<CLIENT_ID>",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dev-...%40...-230314.iam.gserviceaccount.com"
}

Заранее благодарю за поддержку!

Дориан

1 Ответ

0 голосов
/ 08 февраля 2019

Чтобы иметь возможность связать Google Analytics и Google Ads, учетная запись, выполняющая эту ссылку, должна быть редактором в веб-ресурсах Google Analytics (что, по-видимому, вы уже сделали), но также должна быть администратором в учетных записях Google Ads..

Не ваша личная / корпоративная учетная запись Google, но в данном случае сама учетная запись службы.Адрес электронной почты, который вы указали в свойстве client_email в учетных данных.

Ссылка: Справочный центр Google

Предупреждение:

Я не уверен на 100%, что вы сможете это сделать.В Google Ads может потребоваться подтверждение от пользователя для добавления в учетную запись, а тот факт, что у вас нет доступа к почтовому ящику служебной учетной записи, может помешать вам выполнить это подтверждение.Опять же, я не уверен в этом, поэтому я бы попробовал, но в случае, если вы не сможете добавить этого пользователя в учетную запись Google Ads, вам нужно будет найти другой метод для аутентификации вызова API, используя вашу собственную электронную почту вместоСервисный аккаунт.

...