我正在为一家公司开发一个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。
除了“为什么这不起作用”之外我还有其他问题:
是否可以通过这种方式访问v4端点,还是必须使用其客户端库?
Google文档是否真的是最新的?
非常感谢任何输入/体验,谢谢。
答案 0 :(得分:0)
好的,所以这很荒谬,但为了清楚起见,我会解释出了什么问题以及如何解决这个问题。 显然,Google Reporting API未启用。
是的,我知道。在Google的API列表中,默认情况下未列出Reporting API。它只列出热门API, >并且仔细阅读后,很明显您必须搜索才能获得正确的API。
也许我认为“当然报告API列在流行的下面,所以它必须是一个名为Analytics API的”,或者我可能完全错过了“流行”的资格。 无论哪种方式,它现在都像魅力一样,我不需要更改任何原始代码。
我认为有一些关于Google如何传达他们的信息的说法,但那是另一次。我们只是说我花了很长时间才意外地找到了我认为没有启用的Reporting API页面。那令人尴尬!