我正在尝试使用简单的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; }
}
答案 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