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

时间:2017-07-26 16:09:03

标签: c# asp.net-mvc asp.net-core google-analytics-api google-analytics-v4

我正在为一家公司开发一个asp.net核心(1.0 LTS)应用程序。它主要使用Google Analytics(分析)以及其他API动态生成报告,目前使用自签名SSL证书。

我有一个自定义Oauth2授权流程,使用普通的 analytics.readonly 范围向Google 服务器端授权,然后是用户最后调用另一种访问 analytics / v3 / data / ga 端点的方法。访问令牌在授权标头中发送。

这是我的问题:在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错误。合乎逻辑的结论似乎是我的Google Analytics帐户没有足够的权限来访问数据,但在构建相同的JSON时,我可以使用Request Composer或this page上的API资源管理器获取完全相同的数据。 在所有情况下,我使用相同的帐户和相同的viewId。

除了“为什么这不起作用”之外我还有其他问题:

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

  2. Google文档是否真的是最新的?

  3. 非常感谢任何输入/体验,谢谢。

1 个答案:

答案 0 :(得分:0)

好的,所以这很荒谬,但为了清楚起见,我会解释出了什么问题以及如何解决这个问题。 显然,Google Reporting API未启用。

是的,我知道。在Google的API列表中,默认情况下未列出Reporting API。它只列出热门API, >并且仔细阅读后,很明显您必须搜索才能获得正确的API。

也许我认为“当然报告API列在流行的下面,所以它必须是一个名为Analytics API的”,或者我可能完全错过了“流行”的资格。 无论哪种方式,它现在都像魅力一样,我不需要更改任何原始代码。

我认为有一些关于Google如何传达他们的信息的说法,但那是另一次。我们只是说我花了很长时间才意外地找到了我认为没有启用的Reporting API页面。那令人尴尬!