Я пытался найти решение для проблемы, которая кажется относительно распространенной при использовании 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"
}
Заранее благодарю за поддержку!
Дориан