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