Я перемещаю код из нашей среды разработки в промежуточную среду. Я создал проект, клиент oauth, пользователя и учетную запись службы в рамках этого проекта. В консоли аналитики я вижу свою первую учетную запись, и у нее есть свойство. Но когда я запускаю следующий код, он говорит мне, что учетных записей нет:
$env_string = "GOOGLE_APPLICATION_CREDENTIALS = " . PATH_TO_MY_KEY_FILE;
putenv($env_string);
$this->google_analytics_service_client = new AnalyticsAdminServiceClient();
try
{
// make the API call.
$account_summary_list = $analytics_service_client->listAccountSummaries();
print "List of accounts:\n";
foreach ($account_summary_list->iterateAllElements() as $element)
{
print " -- {$element->getDisplayName()}\n";
}
}
catch(Exception $e)
{
print( "There was an Exception: " . $e->getMessage());
}
finally
{
$analytics_service_client->close();
}
Содержимое файла json для моей учетной записи службы:
{
"type": "service_account",
"project_id": "MY_PROJECT_ID",
"private_key_id": PRIVATE_KEY_ID,
"private_key": PRIVATE_KEY_CONTENTS,
"client_email": SERVICE_ACCOUNT_EMAIL,
"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/ga4-stage-bucket-1%40ga4-stage-01.iam.gserviceaccount.com"
}
Это правильный ключевой файл для моего проекта Google. Project_id находится прямо в ключевом файле, я дал доступ администратора (на данный момент) к учетной записи этой учетной записи службы - почему я ничего не получаю в ответ на вызов listAccountSummaries? Этот код работает в моей среде разработки (другой проект Google)
В консоли аналитики, где я создал учетную запись, я нажал «Управление доступом к учетной записи» и добавил адрес электронной почты служебной учетной записи с ролью «Администратор».
В связи с этим возникает еще один вопрос: когда я создаю учетные записи с помощью API подготовки учетных записей, после принятия ToS и создания учетной записи мне нужно будет перейти к этой учетной записи в консоли и предоставить доступ к моей служебной учетной записи?






Хорошо, проблема действительно заключалась в доступе - я предоставил своему пользователю доступ к учетной записи, а не к самой учетной записи службы. Как только это было на месте, я был настроен.
Данг.
Как вы предоставили доступ к сервисному аккаунту?