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