Google Analytics RunReport return 7 PERMISSION_DENIED:用户对此 属性 没有足够的权限

Google Analytics RunReport return 7 PERMISSION_DENIED: User does not have sufficient permissions for this property

我想 运行 使用 运行 报告的 google 分析报告。 我已按照 https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries and made a copy of the code that uses json-credentials at https://github.com/googleapis/nodejs-analytics-data/blob/main/samples/quickstart_json_credentials.js

中的说明进行操作

我有一个分析帐户,其中包含两个属性和应用程序 - DEV 和 STAGE。

在每一个中我都创建了一个具有 OWNER 权限的服务帐户。之后我创建了一个密钥并下载了生成的 JSON-file.

我可以测试 运行 来自“试试这个 API” link 的 API 我的两个属性都很好对于他们两个。 (但后来我当然使用 OAuth 身份验证)。

然而,当我 运行 使用 JSON-凭据的代码时,DEV 始终有效。舞台总是失败。我已经从我的机器和 https://shell.cloud.google.com/ 中尝试 运行ning 代码,结果相同。 失败信息是:

7 PERMISSION_DENIED: User does not have sufficient permissions for this property. To learn more about Property ID, see https://developers.google.com/analytics/devguides/reporting/data/v1/property-id.

我已经多次检查 DEV 和 STAGE 属性是否正确,并且我使用了与正确的 属性.

关联的 JSON-credentials 文件

在 STAGE 中,调用总是失败,我已经多次创建新的服务帐户(使用 Basic->Owner 凭据)、创建密钥并下载 JSON-凭据。但结果都一样。 STAGE 总是失败。

我比较了 DEV 和 STAGE 中服务帐户的权限,它们似乎是相同的。

我已经阅读并尝试了其他人在堆栈溢出时遇到“权限被拒绝”问题的提示,但 none 解决了我的问题。

是否有我从 google 控制台读取的任何授权日志? 我现在有点卡住了。

我的代码运行(属性和文件名混淆):

"use strict";
function main(propertyId = "YOUR-GA4-PROPERTY-ID", credentialsJsonPath = "") {
  propertyId = "27..DEV property";
  credentialsJsonPath = "./DEVcredentials.json";
  //   propertyId = "27..STAGE property";
  //   credentialsJsonPath = "./STAGEcredentials.json";
  const { BetaAnalyticsDataClient } = require("@google-analytics/data");
  const analyticsDataClient = new BetaAnalyticsDataClient({
    keyFilename: credentialsJsonPath,
  });
  async function runReport() {
    const [response] = await analyticsDataClient.runReport({
      property: `properties/${propertyId}`,
      dateRanges: [
        {
          startDate: "2020-03-31",
          endDate: "today",
        },
      ],
      dimensions: [
        {
          name: "country",
        },
      ],
      metrics: [
        {
          name: "activeUsers",
        },
      ],
    });
    console.log("Report result:");
    response.rows.forEach((row) => {
      console.log(row.dimensionValues[0], row.metricValues[0]);
    });
  }

  runReport();
}

process.on("unhandledRejection", (err) => {
  console.error(err.message);
  process.exitCode = 1;
});
main(...process.argv.slice(2));

User does not have sufficient permissions for this property.

表示与您进行身份验证的用户无权访问该视图。在这种情况下,我们谈论的是 properties/${propertyId}

如果您使用的是服务帐户,请确保在帐户级别而不是视图级别授予它权限。

需要通过管理部分的 google 分析网站授予权限