使用API​​密钥通过GET请求从GA请求数据失败

时间:2013-12-03 11:34:01

标签: google-analytics-api

http://ga-dev-tools.appspot.com/explorer/上我向GA提出请求,该请求也适用于那里。我最终得到的URL如下所示:

https://www.googleapis.com/analytics/v3/data/ga
  ?ids=ga%3A12345678&metrics=ga%3Avisitors
  &start-date=2013-11-19&end-date=2013-12-03&max-results=50

现在,如果我正确理解following paragraph ......

  

如果您的客户端应用程序不使用OAuth 2.0,那么它必须   在调用在云中启用的API时包含API密钥   控制台项目。应用程序将此密钥传递给所有API请求   作为key = API_key参数。

...然后我只需附加我在Google Cloud Console上生成的服务器API密钥,如下所示:

https://www.googleapis.com/analytics/v3/data/ga
  ?ids=ga%3A12345678&metrics=ga%3Avisitors
  &start-date=2013-11-19&end-date=2013-12-03&max-results=50
  &key=AI[...]TE

我应该收到一份包含数据的JSON。但相反,我收到一个错误:

{"error":{"errors":[{"domain":"global","reason":"required",
  "message":"Login Required","locationType":"header",
  "location":"Authorization"}],"code":401,"message":"Login Required"}}

我的错误或误解是什么?


您希望通过仅使用API​​密钥通过其API从GA请求数据,而不必使用除Curl之外的外部库来实现GET / POST请求。只有使用我知道的API密钥才能完成这项工作,因为Pentaho Kettle就是这样做的。

2 个答案:

答案 0 :(得分:3)

如果没有经过授权/验证的用户,则无法使用Google AnalyticsAPI。虽然您的“应用程序”可能不会使用OAuth 2.0进行身份验证和授权,但您仍需要以某种方式授权/验证,而API Key不会这样做。

如果您阅读了与之关联的文档的其余部分,特别是Keys, access, security, and identity,您会看到它提到API密钥不用于授权。另外,请查看Choosing an Auth Mechanism以查看可用于身份验证的选项。

那一行

  

如果您的客户端应用程序不使用OAuth 2.0,那么它必须   包括API密钥..

指的是您使用的身份验证机制不是OAuth 2.0,而是其他类似OAuth 1.0,AuthSub或ClientLogin(均已弃用)的情况。在这些情况下,您需要包含API密钥,以便您的API请求可以与您的Cloud Console项目正确关联。

您可能需要查看Google Analytics核心报告API的Authorization文档。

如果您想使用CURL发出请求,那么您需要为每个请求发送一个访问令牌。

答案 1 :(得分:0)

您还可以查看使用google-analytics-super-proxy

这将允许您创建端点以提取数据。 超级代理将处理auth,您的应用程序可以使用端点来获取所需的数据

REF:https://developers.google.com/analytics/solutions/google-analytics-super-proxy