Google API:如何访问Google Analytics(分析)数据?

在深入研究Google Analytics(分析)API之前,了解一些Google Analytics(分析)术语及其关系总是很有用的。

Google帐户:要访问Google Analytics(分析),用户将需要一个Google帐户,该帐户使用户可以登录多个Google产品,例如Gmail,Blogger,Analytics,Adsense等。[user.01@gmail.com]。

Google Analytics(分析)帐户:当用户想要访问网络分析功能时,他们需要注册此服务。 这是代表分析帐户的唯一ID。 用户仍然可以使用其Google帐户电子邮件地址进行身份验证并登录到Google Analytics(分析)帐户服务。 [例如65421]

Google Analytics(分析)示例帐户

网站资源:网站资源可以称为可以独立跟踪的一个网站。 如果该帐户称为AbcCompany,则一个网站资源可以是abc.com,它引用了用户的个人网站,另一个网站资源可以是abcbiz.com,它引用了用户的商业网站,另一个则可以是abc.mobi,它专门针对他的移动客户。 帐户下的网络媒体资源将具有相同的帐号,但后缀不同。 例如,如果AbcCompany的帐户ID是65421,则abc.com的网络媒体资源可以是UA-65421-1,而abcbiz.com的网络媒体资源可以是UA-65421-2。

Google Analytics(分析)示例属性

使用“属性”选项卡创建新属性:

创建一个新属性

Google Analytics(分析)配置文件:每个网络载体帐户将至少具有一个Analytics(分析)配置文件。 该配置文件可以访问所有分析数据和报告。 每个配置文件将具有唯一的配置文件ID。 配置文件可以具有多个目标,用户,过滤器和资产。

个人资料

配置文件设置选项卡提供了配置文件ID和网站URL的详细信息。配置文件可以有一个或多个用户。

编辑配置文件设置

关系的详细信息在下图中突出显示。

GA用户个人资料帐户关系

什么是OAuth 2.0?

OAuth是授权的开放标准。 它允许用户从一个位置到另一位置共享他们的资源,而无需共享凭据。 OAuth 2.0基于OAuth协议,但是它为Web应用程序,桌面应用程序,移动应用程序等提供了新的身份验证功能,可帮助彼此对话。它们使用令牌而不是实际的用户名和密码来进行交谈并提供授权。

Google API与OAuth2.0有何关系?

Google API使用OAuth 2.0标准提供对其应用程序的访问。 Google使用此协议作为他们的身份验证和授权,尤其是当第三方客户端希望安全地访问Google应用程序数据时。 Google授权在几个高级步骤中起作用:

a)向Google注册应用程序
b)将浏览器重定向到URL
c)从响应中解析令牌 d)将令牌发送到Google授权服务器。 e)使用请求的访问令牌获取Google Analytics(分析)数据。

下图描述了对Google服务器(在本例中为Analytics服务器)进行身份验证和授权所遵循的步骤。

Google Analytics(分析)架构

好了,所有介绍都结束了。 我们将采取行动。 到目前为止,我们已经了解了Google Analytics(分析)数据的各种功能以及授权和认证机制。 现在,我们将详细介绍实现细节。 糟糕...仍然缺少一项。 这一切都是关于我们将从Google Analytics(分析)访问哪些数据以及它们之间的关系。

维度与指标

维度与指标

简单来说,Google Analytics(分析)中的Dimension代表报告中的行,而metrics则代表列。 例如,维度是指国家/地区,浏览器,流量来源,而指标是指访问,新访问者,交易等。

那么我们要如何处理所有这些细节?

问题陈述:我们正在尝试创建一个独立的应用程序,该应用程序将尝试使用OAuth 2.0协议并从Google Analytics(分析)中获取数据。

解:

步骤1:下载并导入Jar文件

首先,我们需要下载并导入以下jar文件:
下载位置: Google客户端API

  • google-api-client-1.8.0-beta.jar –包含Google Analytics(分析)的Core API代码
  • google-oauth-client-1.8.0-beta.jar –包含OAuth客户端代码
  • gson-2.1.jar – Java库,用于将JSON转换为Java对象,反之亦然
  • guava-11.0.1.jar –这个jar包含几个Google的核心库,例如集合,缓存,原始支持,通用注释,字符串处理
  • jackson-core-asl-1.9.4.jar –这是高性能的JSON处理器

步骤2:向Google注册客户应用程序

每个应用程序都必须向Google API注册,以便我们在身份验证和授权过程中使用OAuth 2.0令牌。 要注册应用程序,用户必须登录Google帐户并转到Google API控制台 。

在Google API控制台中,使用左侧菜单创建一个新项目。

创建一个新项目

使用“服务”标签启用Analytics API,以便可以对其进行访问。

启用Analytics API

在“ API访问”标签中,创建OAuth 2.0客户端ID。

创建OAuth客户端ID

创建客户ID的品牌信息

创建品牌信息

选择应用程序类型。 在我们的示例中,我们选择通常在本地系统上运行的“已安装的应用程序”。

选择应用类型

API控制台摘要提供了客户端ID和客户端密钥的详细信息。

Google API控制台摘要

步骤3:授权要求

注册将为您的应用程序提供clientId和clientSecret值,以便它可以与Google API一起使用。 此密钥将避免客户端应用程序共享用户名或密码,而是使用这些密钥。

当执行客户端应用程序时,它会提示用户允许访问,并将用户重定向到Google URL,后者提供了授权代码。 授权代码被反馈到客户端应用程序,然后使用该代码获取访问令牌。

第4步:访问Google Analytics(分析)用户数据

客户端应用程序使用访问令牌来获取Google Analytics(分析)用户的数据。

<< GA示例下载代码 >>

示例代码说明:

从Google API控制台收到的Client ID和Client Secret值需要在程序中复制到此处。

private static final String CLIENT_ID = "XXXXXXXXXX";
private static final String CLIENT_SECRET = "XXXXXXXXX";

生成将用于获取授权码的URL。

String authorizationUrl = new GoogleAuthorizationRequestUrl(CLIENT_ID,REDIRECT_URL, SCOPE).build();

此处,REDIRECT_URL表示授权服务器将用户代理重定向到最终用户授权步骤已完成的绝对URI路径,而SCOPE表示表示的访问请求的范围。 一旦执行了应用程序,即会生成URL。 该网址将询问Analytics(分析)帐户用户是否可以允许访问以获取授权码。 授权码生成后,将在客户端应用程序中使用它来访问Google API令牌。

从控制台读取授权代码:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

使用授权码访问OAuth 2.0令牌:

AccessTokenResponse response = new GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant(netHttpTransport, jacksonFactory, CLIENT_ID, CLIENT_SECRET,authorizationCode, REDIRECT_URL).execute();

初始化Analytics服务对象:

Analytics analytics = Analytics.builder(netHttpTransport, jacksonFactory).setHttpRequestInitializer(googleAccessProtectedResource).setApplicationName(APPLICATION_NAME).build();

获取个人资料详细信息:

Profiles profiles = analytics.management().profiles().list("~all", "~all").execute();

使用API​​查询获取Google Analytics(分析)数据:

Get apiQuery = analytics.data().ga().get("ga:" + profile.getId(), // Table ID ="ga"+ProfileID"2012-03-21", // Start date"2012-05-04", // End date"ga:visits"); // Metrics

设置过滤器:

apiQuery.setFilters("ga:medium==referral");
apiQuery.setMaxResults(100);

执行查询:

GaData gaData = apiQuery.execute();

然后可以使用retrieveData()方法从GaData对象中检索数据。

public static void retrieveData(GaData gaData) {
// Get Row Data
if (gaData.getTotalResults() > 0) {
// Get the column headers
for (ColumnHeaders header : gaData.getColumnHeaders()) {
System.out.format("%-20s",
header.getName() + '(' + header.getDataType() + ')');
}
System.out.println();
// Print the rows of data.
for (List<String> rowValues : gaData.getRows()) {
for (String value : rowValues) {
System.out.format("%-20s", value);
}
System.out.println();
}
} else {
System.out.println("No data available");
}
}

如果您想进一步了解Google Analytics(分析),可以参考我们的文章“ All about Google Analytics(分析) ”。

参考: Google API:如何访问Google Analytics(分析)数据? 从我们的JCG合作伙伴 Mainak Goswami在Idiotechie博客上获得。


翻译自: https://www.javacodegeeks.com/2012/07/google-api-how-to-access-analytics-data.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式学习笔记(十六:桥接模式)

1.1概述 将抽象部分与它的实现部分分离&#xff0c;使他们都可以独立地变化。这就是桥接模式的定义。 抽象类或接口中可以定义若干个抽象方法&#xff0c;习惯上将抽象方法称作操作。抽象类或接口使程序的设计者忽略操作的细节&#xff0c;即不必考虑这些操作是如何实现的&…

linux静默删除文件夹,Linux常用命令10 - unzip

zip 是最广泛使用的归档文件, 除了linux&#xff0c;windows也是非常的广泛。&#xff0c;支持无损数据压缩。 zip 文件是包含一个或多个压缩文件或目录的数据容器。接下来&#xff0c;我将解释如何使用 unzip 命令通过命令行解压缩 Linux 系统中的文件。 还有与之对应就是 zip…

python基础:迭代器、生成器(yield)详细解读

1. 迭代器 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问&#xff0c;知道所有的元素被访问完结束。迭代器只能往前不会后退&#xff0c;不过这也没什么&#xff0c;因为人们很少在迭代途中往后退。 1.1 使用迭代器的优点 对于原生支持随机访问的数据…

Linux将硬盘转化为pv,Linux扩展硬盘 物理卷(PV) 卷组(VG) 逻辑卷(LV)

1、给虚拟机添加两块新的sata虚拟硬盘&#xff0c;容量8G和10G# fdisk -l 命令2、分别在这两个硬盘上建立pvPvcreate /dev/sdb 创建一个物理卷/dev/sdb 磁盘名是 fdisk -l 查询出来的Pvscan 查看当前所有物理卷Pvdisplay 查看当前所有物理卷的详情3、创建VG&#xff0c;使得…

ubuntu 16.10 shu rufa meiy ou l e geng xi zhi hou

转载于:https://www.cnblogs.com/ganmk--jy/p/6035894.html

红旗linux 进不去图形界面,进不了红旗Linux6.0的图形界面请高手帮忙

习生 于 2008-11-02 11:08:42发表:引用:原帖由 zhaoruiqi 于 2008-11-2 10:03 发表 我的也是进不了图形界面&#xff0c;用文本安装后进系统也一样正常按rtl的方法对xorg.conf进行修改,已经能进入图形界面。你看看楼上rtl的回复的能否对你有帮助。zhaoruiqi 于 2008-11-02 10:0…

基于Activiti工作流引擎实现的请假审核流程

概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用&#xff0c;该框架用的Activiti版本为5.19.0。本文档中主要以一个请假流程为例子进行说明&#xff0c;该例子的流程图如下&#xff1a; 这是一个可以正常运作的工作流业务了&#xff0c;但是它也有不足的地方&…

linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

1.下载ffmpeg源码,官网&#xff0c;我这里直接采用git 方式下载&#xff1a;下载ffmpeg.png终端输入git命令&#xff1a;静静等待~最后下载的版本为3.4.6 。image.png这里注意一下&#xff0c;刚开始我用的ndk版本是ndk-17b&#xff0c;在编译该版本的ffmpeg时始终失败&#xf…

Spring Security 3 Ajax登录–访问受保护的资源

我看过一些有关Spring Security 3 Ajax登录的博客&#xff0c;但是我找不到解决如何调用基于Ajax的登录的博客&#xff0c;匿名用户正在Ajax中访问受保护的资源。 问题 – Web应用程序允许匿名访问某些部分&#xff0c;并且某些部分是受保护的资源&#xff0c;需要用户登录。 …

linux运维选择题,初学Linux练习题

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中3、一个linux用户给root发邮件&#xff0c;要求邮件标题为”help”&#xff0c…

[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

本文转自&#xff1a;http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了&#xff0c;之前有很多事情&#xff0c;所以拖了很久&#xff0c;非常抱歉。好了&#xff0c;废话不多说&#xff0c;下面开始正题。本篇仍然使用上一季的的项目背景&#xff08;系列地址…

linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S

前言这是个困扰我一年多的问题&#xff0c;今天终于解决了……起因一年前将主系统换成 Arch Linux 后&#xff0c;其他一切正常就是 IDEA 的打开设置的快捷键 ctrlalts 失效&#xff0c;让我很是头疼。虽然不是很重要&#xff0c;但是对于我这种强迫症来说别提多难受了……我曾…

C语言数字3转变字符 3 程序,大学c语言知识点总结

大学c语言知识点总结C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。一起来看看大学c语言知识点总结吧!大学c语言知识点总结1、编译预处理不是C语言的一部分&#xff0c;不再运行时间。C语言编…

接触Jenkins(Hudson)API,第1部分

哪一个-哈德森还是詹金斯&#xff1f; 都。 几个月前&#xff0c;我开始使用Hudson v1.395来从事这个小项目&#xff0c;在出现巨大分歧之后又回到了这个项目。 我以此为契机&#xff0c;看我将来选择永久搬到詹金斯时是否会遇到任何重大问题。 有很多麻烦-最值得注意的是&…

使用javascript模拟常见数据结构(四)

七、树 树是一种非线性的分层的数据结构&#xff0c;在现实生活中比较常见的例子比如家谱和公司的组织架构图&#xff0c;如下所示&#xff1a; 一个树结构存在着一系列的父子结构&#xff0c;并且有着一个根节点&#xff0c;这种结构本质上表明了一对多的关系。 那&#xff0c…

最全Pycharm教程(10)——Pycharm调试器总篇

最全Pycharm教程&#xff08;1&#xff09;——定制外观 最全Pycharm教程&#xff08;2&#xff09;——代码风格 最全Pycharm教程&#xff08;3&#xff09;——代码的调试、执行 最全Pycharm教程&#xff08;4&#xff09;——有关Python解释器的相关配置 最全Pycharm教程&am…

Looper.prepare()和Looper.loop()

什么时候需要 Looper Looper用于封装了android线程中的消息循环&#xff0c;默认情况下一个线程是不存在消息循环&#xff08;message loop&#xff09;的&#xff0c;需要调用Looper.prepare()来给线程创建一个消息循环&#xff0c;调用Looper.loop()来使消息循环起作用&#…

如何查看Ubuntu版本,以及Linux内核版本??

查看Ubuntu版本&#xff1a; 方法一&#xff1a; cat /etc/issue 方法二&#xff1a; sudo lsb_release -a 查看内核版本&#xff1a; uname -r 转载于:https://www.cnblogs.com/tanrong/p/6937749.html

实现chrome扩展启动本地进程 - 补充

实现chrome扩展启动本地进程 - 补充 标签&#xff1a; chrome扩展启动本地程序访问本地磁盘2014-10-17 11:42 6753人阅读 评论(17) 收藏 举报分类&#xff1a;Chrome Plugin版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 示例 主要包含如下部分 c…

单路电压表c语言编程,用AT89C51单片机制作的数字电压表

此数字电压表&#xff0c;利用A/D转换原理将被测模拟量转换成数字量&#xff0c;并通过控制系统用数字方式显示测量结果。本设计采用AT89C51单片机&#xff0c;ADC0809进行模/数转换&#xff0c;能够测量8路0&#xff5e;5V的输入电压值&#xff0c;可用四位LED数码管轮流或单路…