使用服务帐户验证 GA4 Analytics 数据 API 的问题

问题描述 投票:0回答:2

我一直在尝试使用服务帐户调用 Analytics Data API 进行身份验证。

为此,我有

  1. 在 GCP 项目上启用了 Google Analytics Data API
  2. 在 GCP 控制台上的 Google Analytics Data API 的凭据部分创建了一个服务帐户
  3. 创建并下载从服务帐户创建的 JSON 密钥文件
  4. 将 GOOGLE_APPLICATION_CREDENTIALS 设置为 JSON 密钥文件的路径
  5. 已将服务帐号作为管理员添加到具有我有权访问的 GA4 媒体资源的 Analytics 帐号中

不幸的是,每当我尝试使用 BetaAnalyticsDataClient 运行任何 Python 脚本时,无论我尝试哪个资源端点,最终都会收到此错误

  response = client.run_report(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blah/newenv/lib/python3.11/site-packages/google/analytics/data_v1beta/services/beta_analytics_data/client.py", line 518, in run_report
    response = rpc(
               ^^^^
  File "/blah/newenv/lib/python3.11/site-packages/google/api_core/gapic_v1/method.py", line 113, in __call__
    return wrapped_func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blah/newenv/lib/python3.11/site-packages/google/api_core/timeout.py", line 120, in func_with_timeout
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/blah/newenv/lib/python3.11/site-packages/google/api_core/grpc_helpers.py", line 74, in error_remapped_callable
    raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.DeadlineExceeded: 504 Deadline Exceeded

我什至尝试过https://github.com/googleapis/python-analytics-data/blob/main/samples/snippets/get_common_metadata.py,它使用一些全局内部属性,但仍然收到 DeadlineExceeded 错误。

在初始化客户端时,我也尝试过 BetaAnalyticsDataClient.from_service_account_file("the_file"),希望这能起作用。

另外作为一个测试 - 虽然我不知道这是否应该工作 - 已经尝试过:

  1. gcloud auth activate-service-account --key-file the-service-account-json-key.json
  2. gcloud auth application-default print-access-token 打印访问令牌
curl -X GET \                                     
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  https://analyticsdata.googleapis.com/v1beta/properties/0/metadata

返回

{
  "error": {
    "code": 403,
    "message": "Request had insufficient authentication scopes.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT",
        "domain": "googleapis.com",
        "metadata": {
          "method": "google.analytics.data.v1beta.BetaAnalyticsData.GetMetadata",
          "service": "analyticsdata.googleapis.com"
        }
      }
    ]
  }
}

并已在我授予服务帐户管理员访问权限的属性上尝试过此操作。

我还需要启用其他功能才能使服务帐户正常工作吗?

google-analytics google-analytics-api google-analytics-4
2个回答
0
投票

在看不到代码的情况下很难提供帮助,但错误消息会告诉您问题是什么

Request had insufficient authentication scopes.

提出请求时,您需要获得以下范围之一的授权。

修复范围并重试。


-1
投票

@mountaineer,我目前也遇到同样的问题。 启用 Google Analytics Data API 后,您花了多长时间才成功运行请求? 您认为这与时间同步有关吗?

© www.soinside.com 2019 - 2024. All rights reserved.