适用于.NET的Analytics Reporting API V4客户端库

我正在尝试从我们的Google分析实例中获取一些数据,并且我想使用适用于.NET的Analytics Reporting API V4客户端库( https://developers.google.com/api-client-library/dotnet/apis / analyticsreporting / v4 )这样我就可以将一些数据烘焙到我们构建的管理站点中。 我无法找到使用此代码的任何示例,文档似乎非常稀疏。 我想使用服务帐户进行授权,因为我们只需要查看与我们控制的分析帐户相关联的数据。

如果有人可以提供一些示例代码或指出我正确的方向使用.net api获取一些基本的报告数据,我将不胜感激

从C#调用Google Analytics Reporting API并不是特别困难,但Google Analyics API文档中似乎没有详细说明所有必要步骤。 我会尝试在这里列出所有内容。 虽然YMMV,我相信这些步骤在2016年7月20日是正确的。

您可以从创建新的C#项目开始。 我们将制作一个名为GoogleAnalyticsApiConsole的控制台应用程序。 创建项目后,我们将使用NuGet包管理器控制台(位于Visual Studio 2015的“工具”菜单下)添加对Google Analytics Reporting API V4 Client Library for .NET的引用。 启动控制台并在PM>提示符下发出以下命令:

PM> Install-Package Google.Apis.AnalyticsReporting.v4

安装该软件包将下载调用Google Analytics报告Web服务所需的客户端库以及许多其他依赖项。

要调用Web服务,您需要为应用程序设置OAuth 2.0访问权限。 可以在此处找到此设置的文档,但我将在下面进行总结:

  1. 登录Google云端控制台 : https : //console.cloud.google.com/ 。 请务必使用可以访问您尝试使用报告API查询的Google Analytics帐户的帐户登录。

  2. 单击Google Cloud Platform菜单,然后选择API Manager

Google Cloud Platform API Manager

  1. 在左侧,单击“ 凭据” ,然后创建一个名为Google Analytics API Console的新项目。 给它一些时间来创建新项目。

  2. 创建项目后,如果尚未选择“ 凭据” ,请再次单击“ 凭据” ,然后单击右侧面板中的“ OAuth同意屏幕”链接。 将显示给用户产品名称设置为Google Analytics API Console ,然后点击保存。

  3. 再次单击“ 凭据” ,然后单击“ 创建凭据” ,并选择“ OAuth客户端ID” 。 选择其他 应用程序类型 ,然后输入Google Analytics API Console作为名称 ,然后单击创建

  4. 创建凭证后,您将看到客户端ID和客户端密钥。 您可以关闭对话框窗口。

  5. 现在,在凭据下,您应该在OAuth 2.0客户端ID下看到一个条目。 单击该条目最右侧的下载图标以下载client_secret.json文件(此文件将具有更长的名称)。 下载后,将该文件添加到根级别的项目中,并将其重命名为client_secret.json

Google Cloud Platform API凭据

  1. 现在已经创建了OAuth 2.0凭据,我们需要启用它来调用Reporting API。 选择概述 ,确保在右侧面板中选择了Google API 。 在搜索框中键入Reporting ,然后从列表中选择Analytics Reporting API V4 。 在下一个屏幕上,单击“ 启用” 。 启用此API后,您应该可以在右侧面板的“ 启用的API”列表中看到它。

Google Cloud Platform支持Google Analytics报告

现在我们已经创建了项目并创建了OAuth 2.0凭据,现在是时候调用Reporting API V4了。 下面列出的代码将使用Google API和client_secret.json文件创建Google.Apis.Auth.OAuth2.UserCredential以查询Reporting API,查看View的给定日期范围之间的所有会话。 该代码在此处改编自Java示例 。

在执行代码之前 ,请确保将client_secret.json文件上的Build Action设置为Content ,将Copy to Output Directory设置为Copy by newer 。 还有两个变量需要正确设置。 首先,在GetCredential()方法中,将loginEmailAddress值设置为用于创建OAuth 2.0凭据的电子邮件地址。 然后,在Main方法中,确保将reportRequest变量中的ViewId设置为要使用Reporting API查询的视图。 要查找ViewId ,请登录Google Analytics并选择“ 管理”标签。 从那里,在最右侧的“ 查看”下拉列表中选择要查询的视图 ,然后选择“ 查看设置”视图ID将显示在“ 基本设置”下

第一次执行代码时,它会显示一个网页,询问您是否要允许Google Analytics API Console访问API数据。 选择允许继续。 从那时起,该权限将存储在GoogleAnalyticsApiConsole FileDataStore 。 如果删除该文件,则需要再次授予权限。 该文件可以在%APPDATA%\GoogleAnalyicsApiConsole目录中找到。

Google API权限OAuth 2.0

请注意,我相信这种情况将满足OP的需求。 如果要将此应用程序分发给客户端,则很可能需要使用不同的OAuth 2.0方案。

这是代码:

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using Google.Apis.AnalyticsReporting.v4; using Google.Apis.AnalyticsReporting.v4.Data; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Util.Store; namespace GoogleAnalyticsApiConsole { class Program { static void Main(string[] args) { try { var credential = GetCredential().Result; using(var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Google Analytics API Console" })) { var dateRange = new DateRange { StartDate = "2016-05-01", EndDate = "2016-05-31" }; var sessions = new Metric { Expression = "ga:sessions", Alias = "Sessions" }; var date = new Dimension { Name = "ga:date" }; var reportRequest = new ReportRequest { DateRanges = new List { dateRange }, Dimensions = new List { date }, Metrics = new List { sessions }, ViewId = "<>" }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); foreach (var x in response.Reports.First().Data.Rows) { Console.WriteLine(string.Join(", ", x.Dimensions) + " " + string.Join(", ", x.Metrics.First().Values)); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } static async Task GetCredential() { using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { const string loginEmailAddress = "<>"; return await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, new[] { AnalyticsReportingService.Scope.Analytics }, loginEmailAddress, CancellationToken.None, new FileDataStore("GoogleAnalyticsApiConsole")); } } } } 

我有相同的经验:谷歌的文档非常深入,但在提供如何连接.NET的明确示例方面非常糟糕。

我最终意识到的一个关键因素是您可以使用OAuth2凭据或服务帐户凭据进行连接。 如果您拥有Google Analytics帐户,请使用服务帐户。 如果您需要连接到其他用户的Google Analytics帐户,请使用OAuth2。

似乎有很多关于如何使用OAuth2凭据获取Analytics API数据的在线示例,但我拥有自己的Google Analytics帐户,只是想从中提取数据。 我想出了如何使用ServiceAccountCredential连接到Analytics Reporting API v4,并且我在类似的Stack Overflow问题上写了一个答案 ,其中包含所有细节。