我有一个在App Engine上运行的Golang应用程序,我想调用Analytics API处理一些指标。在App Engine和开发服务器上。
此页面描述了使用服务帐户进行服务器到服务器通信以及使用OAuth2获取访问令牌的总体过程。我希望自己避免这样做,所以我找到了Go的Google API和以下描述如何为App Engine做到的API。
我已将App Engine应用程序的服务帐户电子邮件添加到Google Analytics(分析),以进行读取访问。
我使用查询浏览器来处理查询,并且效果很好。我什至从这里使用了API查询URI,其中包括正确的访问令牌,并且工作正常。可以在cURL上使用,也可以在App Engine上通过urlfetch调用它。
我需要的是在App Engine上以及在使用开发服务器时自动获取访问令牌。
在这里是URL缩短器的示例,已对其进行了修改以改为使用Analytics API。
client := http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(c, analytics.AnalyticsScope),
Base: &urlfetch.Transport{Context: c},
},
}
svc, err := analytics.New(&client)
if err != nil {
return nil, err
}
data, err := svc.Data.Ga.Get("...")
开发服务器中的响应是401无效凭据authError。
这应该像这样工作还是我错过了什么?
更新
因此,问题解决了一半。当我传递服务帐户的电子邮件和.pem
文件时,现在可以使用开发服务器正常工作。但是,App Engine中的同一服务帐户无法与以上代码一起使用!
googleapi: Error 403: User does not have any Google Analytics account., insufficientPermissions
用户应该是我已经在开发服务器上成功使用的服务帐户,因此我不太了解这个问题。它与App Engine和开发服务器上的代码完全相同。
Google Analytics(分析)设置为具有读取访问权限,我使用的是只读API。而且它已经可以在开发服务器上运行了,应该没问题。
问题可能有什么不同?
它可以提供开发服务器与如启动必要的信息在这里。
$ dev_appserver.py --appidentity_email_address email --appidentity_private_key_path file.pem
对于App Engine,您无需使用此服务帐户,而应使用具有应用程序名称的帐户:
[email protected]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句