将GoogleAnalytics与服务帐户配合使用

时间:2014-07-04 08:42:52

标签: google-analytics-api service-accounts

我尝试使用Google.Apis.Analytics.v3客户端库来检索指标,我想使用Service Account

根据文档和StackOverflow上的几个问题,我认为这应该有效。我过去已经使用过服务帐户来对付Google BigQuery和Google Cloud Storage API,所以我认为我可以很容易地使用它。

不幸的是,每次我针对Google Analytics执行操作时,都会收到以下错误:

TokenResponseException: 其他信息:错误:" invalid_grant",说明:"",Uri:""

为了记录,我在这里做了什么:

  • 在Google Developer Console中创建了一个全新的项目。
  • 启用了Google AnalyticsAPI。
  • 创建一个"服务帐户"客户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;
}

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以找到解决方案here

服务帐户是一个电子邮件地址,类似于 @ developer.gserviceaccount.com

答案 1 :(得分:0)

您似乎使用了错误的serviceAccountID。它应该是以@developer.gserviceaccount.com

结尾的那个

而且,您只需要在分析帐户中完全控制该电子邮件Read and Analyze权限。

我还认为它需要一个applicationName。这是GA控制台中的应用名称。