2017-03-17 87 views
2

我需要跟蹤某人何時從我的服務器上下載文件,所以我創建了一個端點作爲參數的文件名。如何從GET請求中收集Google Analytics的客戶端ID服務器端?

該端點只發送GA事件並將文件返回給用戶。

但是,由於我是服務器端,我無法輕鬆獲取客戶端ID以將其發送回Google Analytics。經過一番研究,此CID可在_ga cookie中獲得,但Google建議不要指望它,因爲cookie可能在將來發生變化:

https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#getting_the_client_id_from_the_cookie)。

那麼,我怎樣才能收集客戶端ID服務器端發送回我的事件呢?

回答

1

_ga cookie由analytics.js庫生成並使用,它是Google Analytics標識站點上用戶的方式。這個值被生成存儲在cookie中,據我所知,你不能從API調用生成它,例如。 即使您已經完成了您的研究,我也可以爲您提供有關_ga值的一些信息。 正如你所看到的cookie的值是一樣的東西GA1.2.XXXXXXXXX.XXXXXXXXXX

你必須提取得到的CID值,你將與你的服務器端發送請求的部分是最後兩個部分用點(。)分隔的值意思是:

GA1.2。 XXXXXXXXX.XXXXXXXXXX < - 粗體部分包括中間

點也如你提到,谷歌的報告,你不應該對cookie的「名」計數。這意味着像getCookie('_ ga')這樣的函數將不能保證能夠工作。但是,如果您繼續閱讀分析跟蹤器對象,則會提供一個函數回調函數,它將爲您提供保證的值。

ga(function(tracker) { 
    var clientId = tracker.get('clientId'); 
}); 

的方式,我會去是用這個回調,得到CID,把它在我的請求的有效負載加密(例如,作爲一個額外的參數),它在服務器上進行解碼,然後發送測量協議請求。

+2

謝謝你的非常完整的答案。我曾想過把cid作爲GET參數發送,但是想到了這個:如果用戶與其他人分享鏈接會怎麼樣?我的統計資料將被損壞,因爲我將爲同一用戶註冊2次點擊... –

+1

嗯這種情況實際上是描述[鏈接](https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain #detecting_url_sharing)在這裏。首先,您可以使用特定的元數據(如User-Agent等)來識別用戶。其次,您可以將自己的應用程序的「會話」ID作爲自定義客戶端ID發送給GA。通過這種方式,如果其他用戶使用鏈接,只要應用程序加載,您就會知道。最後,您可以在ga庫的鏈接頁面上加載並開始下載。 – Igneel64

相關問題