【发布时间】:2014-07-04 08:42:51
【问题描述】:
我正在尝试使用Google.Apis.Analytics.v3 客户端库来检索指标,我想使用Service Account。
根据 StackOverflow 上的文档和几个问题,我认为这应该可行。过去我已经针对 Google BigQuery 和 Google Cloud Storage API 使用过服务帐户,所以我认为我可以让它很容易地工作。
很遗憾,每次我对 Google Analytics 执行操作时,都会收到以下错误:
TokenResponseException:
附加信息:错误:“invalid_grant”,描述:“”,Uri:“”
为了记录,这里我做了什么:
- 在 Google Developer Console 中创建了一个全新的项目。
- 已启用 Google Analytics API。
- 创建“服务帐户”客户端 ID。
- 记下“客户 ID”、证书及其密码。
- 将服务帐户“电子邮件地址”添加为对 Google Analytics 帐户具有完全权限的用户。
这是我用来连接到 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;
}
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我也问过同样的问题,但对于 php...
-
等待答复...
-
在帐户级别将服务帐户电子邮件地址添加为 Google Analytics 中的用户。它不能只在配置文件级别添加。
标签: google-analytics-api service-accounts