如何使用"简单的API密钥"获取谷歌分析数据在C#?

时间:2016-12-16 02:49:12

标签: .net asp.net-web-api google-api google-analytics-api google-api-dotnet-client

我正在尝试使用简单的api密钥从C#获取Google Analytics数据,但我收到了一个需要登录的错误。有人可以帮我了解如何使用简单的api密钥获取Google Analytics数据,而无需使用OAuth或服务帐户类型凭据吗?

以下是我到目前为止编写的代码:

public AnalyticsService Service { get; set; }

[ActionName("GetAnalyticsData")]
[HttpGet]
public AnalyticDataPoint GetAnalyticsData()
{
    Service = new AnalyticsService(new BaseClientService.Initializer()
        {
            ApplicationName = "TU-SME Dashboard",
            ApiKey = "AIzaSyBfHuyRHd7Dy4Go_zF3ebjnKB4h3ybiJFk",
        });

    AnalyticDataPoint data = new AnalyticDataPoint();

    GaData response = null;
    var request = Service.Data.Ga.Get("ga:3169903", "30daysAgo","yesterday", "ga:sessions");
    response = request.Execute();

    data.ColumnHeaders = response.ColumnHeaders;
    data.Rows.AddRange(response.Rows);            

    return data;
}

public class AnalyticDataPoint
{
    public AnalyticDataPoint()
    {
        Rows = new List<IList<string>>();
    }

    public IList<GaData.ColumnHeadersData> ColumnHeaders { get; set; }
    public List<IList<string>> Rows { get; set; }
}

1 个答案:

答案 0 :(得分:0)

API密钥用于访问公共数据。公共数据是不属于任何人的数据。例如,在Google上搜索Google图书就是对公共数据的请求的示例。

列出我的google云端硬盘帐户上的文件,访问我的Google Analytics帐户信息。是私人用户数据的示例。

为了访问私人用户数据,该数据的所有者必须首先授予您通过身份验证访问该数据的权限。

Anwser:您可以使用Oauth2或服务帐户访问私人Google分析数据。您无法使用API​​密钥访问Google分析数据。

服务帐户身份验证:(来自评论)

从Google Developer控制台获取服务帐户电子邮件地址,我们需要通过此电子邮件地址访问我们的Google Analytics数据。我们将其添加为Google Analytics网站管理员部分中的任何其他用户。以帐户级别的用户身份添加服务帐户电子邮件地址,必须是帐户级别。这样,您的服务帐户就可以访问相关的Google Analytics帐户。我提到它一定是在ACCOUNT级吗?

string[] scopes = new string[] {AnalyticsService.Scope.Analytics}; // view and manage your Google Analytics data

var keyFilePath = @"c:\file.p12" ;    // Downloaded from https://console.developers.google.com
var serviceAccountEmail = "xx@developer.gserviceaccount.com";  // found https://console.developers.google.com

//loading the Key file
var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail) {
                                                   Scopes = scopes}.FromCertificate(certificate));

从我的Google Analytics tutorial series中删除了代码Google Service Account with Json file,但是它使用较新版本的Google分析API(v4)您的代码使用较旧的API(v3)需要改变它以便与v3一起使用。

如何创建服务帐户凭据Google Developer console service account