迁移 Analytics Reporting API(从 v3 到 v4)时禁止访问 403

403 Forbidden when migrating Analytics Reporting API (from v3 to v4)

我正在为一家公司开发 asp.net 核心 (1.0 LTS) 应用程序。它主要使用 Google Analytics 动态生成报告,但也使用其他 APIs,目前使用 self-signed SSL 证书。

我有一个 自定义 Oauth2 授权 流程,它使用 Google server-side 使用正常 analytics.readonly 范围,然后用户最终调用另一个访问 analytics/v3/data/ga 端点的方法。访问令牌在授权中发送 header.

这是我的问题: 当 POST 访问 v4 batchGet 端点时,我一直收到 403 禁止。 我的POST 代码如下所示:

HttpResponseMessage response = await client.PostAsync("https://analyticsreporting.googleapis.com/v4/reports:batchGet",
                new StringContent(requestBody));

其中requestBody是一个包含JSON的字符串,看起来像这样:

{
  "reportRequests": [
    {
      "viewId": "XXXX",
      "dateRanges": [
        {
          "startDate": "2017-06-01",
          "endDate": "2017-06-30"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ]
    }
  ]
}

因为我得到了 403,所以我假设授权是有效的。如果我 POST 没有它,我会得到预期的 401 错误。合乎逻辑的结论似乎是我的 Analytics 帐户没有足够的权限来访问数据,但我可以使用 Request Composer 或 this page 上的 API 资源管理器获取完全相同的数据,当建立相同的 JSON。 在所有情况下,我都使用相同的帐户和相同的 viewId。

除"why isn't this working"之外还有其他问题:

  1. 是否可以通过这种方式访问​​ v4 端点,还是我必须使用他们的客户端库?

  2. Google 文档真的是 up-to-date 吗?

非常感谢任何意见/经验,谢谢。

好吧,这很荒谬,但为了清楚起见,我将解释哪里出了问题以及如何解决这个问题。 显然,Google 报告 API 未启用。

是的,我知道。 在 Google 的 API 列表中, 报告 API 是默认情况下不列出。 它只列出 流行的 API, 并且仔细阅读后,很明显 你必须搜索得到正确的 API.

也许我认为 "of course the Reporting API is listed under popular, so it has to be the one called Analytics API" 或者我完全错过了资格赛 "popular"。 不管怎样,它现在运行得非常棒,我不必更改任何原始代码。

我认为关于 Google 一般如何传达他们的信息有话要说,但那是另外一次了。这么说吧,我花了很长时间才 意外地找到了报告 API 页面,但我发现它没有启用。 好尴尬!