我尝试使用Google.Apis.Analytics.v3客户端库来检索指标,我想使用Service Account。
根据文档和StackOverflow上的几个问题,我认为这应该有效。我过去已经使用过服务帐户来对付Google BigQuery和Google Cloud Storage API,所以我认为我可以很容易地使用它。
不幸的是,每次我针对Google Analytics执行操作时,都会收到以下错误:
TokenResponseException:
其他信息:错误:" invalid_grant",说明:"",Uri:""
为了记录,我在这里做了什么:
以下是我用于连接Google Analytics的代码:
private static AnalyticsService ConnectServiceAccount()
{
const string serviceAccountId = "xxxxxxxxxx-xxxxxxxxxxxx.apps.googleusercontent.com";
const string serviceAccountCertificate = "xxxxxxxxxxxxxxxxxxxxxxxxxx-privatekey.p12";
const string applicationName = "";
var certificate = GetServiceAccountCertificate(serviceAccountCertificate);
var credentials = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountId)
{
Scopes = new[] {
AnalyticsService.Scope.Analytics,
AnalyticsService.Scope.AnalyticsEdit,
AnalyticsService.Scope.AnalyticsManageUsers,
AnalyticsService.Scope.AnalyticsProvision,
AnalyticsService.Scope.AnalyticsReadonly
},
}.FromCertificate(certificate)
);
var service =
new AnalyticsService(
new BaseClientService.Initializer
{
GZipEnabled = true,
HttpClientInitializer = credentials,
});
return service;
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可以找到解决方案here
服务帐户是一个电子邮件地址,类似于 @ developer.gserviceaccount.com
答案 1 :(得分:0)
您似乎使用了错误的serviceAccountID
。它应该是以@developer.gserviceaccount.com
而且,您只需要在分析帐户中完全控制该电子邮件Read and Analyze
权限。
我还认为它需要一个applicationName
。这是GA控制台中的应用名称。