我正在将代码从我们的开发环境转移到暂存环境。我在该项目中创建了一个项目、一个 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 调用中得到任何回复?这段代码在我的开发环境中工作(不同的谷歌项目)
好的,问题确实出在访问权限上——我已经授予我的用户访问帐户的权限,而不是服务帐户本身。一旦到位,我就准备好了。
该死的