它需要在谷歌方面进行一些设置,但实际上相当简单。我会一步一步列出。
首先,您需要在Google cloud console中创建一个应用程序,并启用Analytics API。
现在,我们有一个服务帐户,您将需要允许这个服务帐户访问您的个人资料/网站在谷歌分析。
现在服务帐户通过API访问Google Analytics的设置已经完成,我们可以开始编写代码了。
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Services;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Auth.OAuth2;
using System.Collections.Generic;
using System.Linq;
一些需要注意的事情是。
keypath
是您下载的具有.p12文件扩展名的密钥文件的路径。AccounteMailAddress
是我们前面得到的api电子邮件。google.apis.analytics.v3.analyticService
类中的枚举,它指定用于授权的url(例如:analyticsService.scope.analyticsReadOnly
)。然后执行一些基本调用的代码如下所示。
public class GoogleAnalyticsAPI
{
public AnalyticsService Service { get; set; }
public GoogleAnalyticsAPI(string keyPath, string accountEmailAddress)
{
var certificate = new X509Certificate2(keyPath, "notasecret", X509KeyStorageFlags.Exportable);
var credentials = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(accountEmailAddress)
{
Scopes = new[] { AnalyticsService.Scope.AnalyticsReadonly }
}.FromCertificate(certificate));
Service = new AnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credentials,
ApplicationName = "WorthlessVariable"
});
}
public AnalyticDataPoint GetAnalyticsData(string profileId, string[] dimensions, string[] metrics, DateTime startDate, DateTime endDate)
{
AnalyticDataPoint data = new AnalyticDataPoint();
if (!profileId.Contains("ga:"))
profileId = string.Format("ga:{0}", profileId);
//Make initial call to service.
//Then check if a next link exists in the response,
//if so parse and call again using start index param.
GaData response = null;
do
{
int startIndex = 1;
if (response != null && !string.IsNullOrEmpty(response.NextLink))
{
Uri uri = new Uri(response.NextLink);
var paramerters = uri.Query.Split('&');
string s = paramerters.First(i => i.Contains("start-index")).Split('=')[1];
startIndex = int.Parse(s);
}
var request = BuildAnalyticRequest(profileId, dimensions, metrics, startDate, endDate, startIndex);
response = request.Execute();
data.ColumnHeaders = response.ColumnHeaders;
data.Rows.AddRange(response.Rows);
} while (!string.IsNullOrEmpty(response.NextLink));
return data;
}
private DataResource.GaResource.GetRequest BuildAnalyticRequest(string profileId, string[] dimensions, string[] metrics,
DateTime startDate, DateTime endDate, int startIndex)
{
DataResource.GaResource.GetRequest request = Service.Data.Ga.Get(profileId, startDate.ToString("yyyy-MM-dd"),
endDate.ToString("yyyy-MM-dd"), string.Join(",", metrics));
request.Dimensions = string.Join(",", dimensions);
request.StartIndex = startIndex;
return request;
}
public IList<Profile> GetAvailableProfiles()
{
var response = Service.Management.Profiles.List("~all", "~all").Execute();
return response.Items;
}
public class AnalyticDataPoint
{
public AnalyticDataPoint()
{
Rows = new List<IList<string>>();
}
public IList<GaData.ColumnHeadersData> ColumnHeaders { get; set; }
public List<IList<string>> Rows { get; set; }
}
}
其他有用的链接:
分析API资源管理器-从Web查询API
Analytic API Explorer第2版-从Web查询API
尺寸和度量参考
希望这能帮助将来尝试这样做的人。
我正在编程。我想捕获并使用每一帧进行处理。视频流是根据协议从捕获的。我使用Vmax摄像机(型号:vx-1311FHB,支持)。我还使用库从以下URL捕获视频: rtsp://192.168.1.66:554/streaming/channels/1?transportmode=unicast&profile=profile_1 但我看不到卡默拉的任何回应或影像。 我在VLC媒体播放器上测试这个ur
我正在使用thymeleaf和spring 3 mvc。当我尝试执行Ajax POST请求时,我不明白如何在html页面上显示来自控制器的响应消息: 这是一个代码片段: “响应”是来自控制器的i18n消息。现在,我想在使用thymeleaf(th:text=“response”)时显示这条消息。当然,这段代码不起作用,因为它认为响应变量是一个普通字符串。 问题是如何使用thymeleaf显示国际化
我想在JavaFX上发出这样的错误消息。我该怎么做?
图 7.1:本节实现的用户资料页面构思图 本节要实现的用户资料页面是完整页面的一小部分,只显示用户的名字和头像,构思图如图 7.1 所示。[1] 最终完成的用户资料页面会显示用户的头像、基本信息和微博列表,构思图如图 7.2 所示。[2](在图 7.2 中,我们第一次用到了“lorem ipsum”占位文字,这些文字背后的故事很有意思,有空的话你可以了解一下。)这个资料页面会和整个演示应用一起在第
问题内容: 我正在尝试显示一个ProgressBar。 我是Android初学者。 当我按下按钮时,任务应该在后台运行,但是它不会显示ProgressBar。 怎么了 我不明白。 请帮我! 主要活动: 我的任务: 问题答案: 您没有调用的方法。
我第一次使用Glide在ImageView中显示GIF。我已经按照几个站点的方式对其进行了编码。但它不起作用。我已经给出了以下所有代码:(如果我弄错了什么,请告诉我) 项目级build.gradle 应用程序级构建。gradle文件: activity_main.xml 活动Java代码: 单击“提交”按钮后,我没有看到GIF图像。