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,一经查实,立即删除!

相关文章

为什么linux的新得立软件下载,linux,debian_蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理?,linux,debian - phpStudy...

蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理&#xff1f;(synaptic:9573): GLib-CRITICAL **: g_child_watch_add_full: assertion pid > 0 failed正在预设定软件包 ...(正在读取数据库 ... 系统当前共安装有 343467 个文件和目录。)正准备解包 .../libc6-db…

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

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

Request的getParameter和getAttribute方法的差别

HttpServletRequest.getParameter("modelName");能取到想要的modelObject吗&#xff1f;经过測试之后。发现是不能的。后来想想。其它道理挺简单的&#xff0c;当两个Web组件之间为转发关系时&#xff0c;转发源会将要共享request范围内的数据先用setAttribute将数据…

Spring Social入门–第2部分

几周前&#xff0c;我写了一篇文章&#xff0c;展示了我认为可以使用Spring Social编写的最简单的应用程序。 该应用程序读取并显示了Twitter用户的公共数据&#xff0c;并被编写为Spring Social和社交编码领域的介绍。 但是&#xff0c;让您的应用程序显示用户的公共数据只是故…

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

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

Git学习笔记(一) 安装及版本库介绍

安装Git 最早Git是在Linux上开发的&#xff0c;很长一段时间内&#xff0c;Git也只能在Linux和Unix系统上跑。不过&#xff0c;慢慢地有人把它移植到了Windows上。现在&#xff0c;Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。 在Linux上安装Git 首先&#xff…

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

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

LazyInitializationException的四种解决方案–第2部分

本文从教程​​的第1部分继续。 使用PersistenceContextType.EXTENDED的有状态EJB加载收集 该方法只能应用于与Full JEE环境兼容的应用程序&#xff1a;将EJB与PersistenceContextType.EXTENDED一起使用。 检查下面的代码&#xff0c;DAO的样子&#xff1a; package com.ejb…

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

ZOJ Monthly, November 2012

A.ZOJ 3666 Alice and Bob 组合博弈&#xff0c;SG函数应用#include<vector> #include<cstdio> #include<cstring> #include<algorithm>using namespace std;const int maxn 10000 100; int SG[maxn]; vector<int> g[maxn];int mex(int u) { /…

使用Aspect和Spring Profile进行电子邮件过滤

在Web应用程序开发期间&#xff0c;经常需要发送电子邮件。 但是&#xff0c;有时数据库中会包含来自生产的数据&#xff0c;并且存在在电子邮件测试执行期间向真实客户发送电子邮件的风险。 这篇文章将解释如何避免在没有在发送电子邮件功能中明确编写代码的情况下避免这种情…

红旗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…

总结继承的几种方式

简单总结继承的几种方式 JavaScript作为一门弱类型的语言&#xff0c;本着精简的原则&#xff0c;它取消了类的概念&#xff0c;只有对象的概念&#xff0c; 更是有万物皆对象的说法。在基于类的面向对象方式中&#xff0c;对象&#xff08;object&#xff09;依靠类&#xff0…

Oracle SQL精妙SQL语句讲解(二)

- 如果存在就更新&#xff0c;不存在就插入用一个语句实现 DROP TABLE t_mg; CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10)); SELECT * FROM t_mg; MERGE INTO t_mg a USING (SELECT the code code, the name NAME FROM dual) b ON (a.code b.code) WHEN M…

Spring Security –在一个应用程序中有两个安全领域

这篇博客文章主要是关于Spring Security配置的。 更具体地说&#xff0c;它打算显示如何在一个Web应用程序中配置两个不同的安全领域。 第一安全领域是针对浏览器客户端的。 它使我们能够在登录页面中登录并访问受保护的资源。 第二安全领域旨在处理来自android应用程序的REST…

基于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…

4Web Service中的几个重要术语

4.1WSDL: web service definition language 直译:Webservice定义语言 1.对应一种类型的文件.wsdl 2.定义了webservice的服务端与客户端应用交互传递请求和响应数据的格式和方式 3.一个webservice对应一个唯一的esdl文档 4.2SOAP: simple object access protocal 直译:简单对象访…

云端:亚马逊,谷歌应用引擎,Windows Azure,Heroku,Jelastic

您想在云端吗&#xff1f; 您有很多选择。 我已经评估或使用了许多方法&#xff0c;因此这里有几句话。 &#xff08;当我使用Java时&#xff0c;我将包括一些与Java相关的注释&#xff0c;但大多数情况适用于所有&#xff08;受支持的&#xff09;语言。&#xff09; 但是在深…