我正在尝试使用Google.Apis.Analytics.v3客户端库来检索指标,并且我想使用Service Account。
根据 StackOverflow 上的文档和几个问题,我认为这应该可行。过去我已经针对 Google BigQuery 和 Google Cloud Storage API 使用过服务帐户,所以我认为我可以让它很容易地工作。
不幸的是,每次我对 Google Analytics 执行操作时,都会收到以下错误:
TokenResponseException:
附加信息:错误:“invalid_grant”,描述:“”,Uri:“”
为了记录,这里我做了什么:
- 在 Google Developer Console 中创建了一个全新的项目。
- 启用谷歌分析 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;
}
有人可以帮我解决这个问题吗?