javascript - 使用测量协议(protocol)向 GA 发送数据时如何获取客户端 ID?

标签 javascript google-analytics google-analytics-api universal-analytics measurement-protocol

我尝试通过前端 (js) 和后端(测量协议(protocol))使用 analytics.js (Universal Analytics)。

通过前端(js方式)使用时:
我检查是否有一个名为 _ga 的 cookie,其值为 GA1.2.1360127879.1438853622 。它通过请求 'http://www.google-analytics.com/collect?...' 将数据发送到 cid=1360127879.1438853622 的 GA。我知道 1360127879 是唯一 ID,1438853622 是时间戳。

通过后端(测量协议(protocol))使用时:
我在这里有几个问题:

1. 如何从浏览器获取客户端 ID?

一种方法是从后端读取 _ga cookie 并从中解析客户端 ID。但我读到不推荐这样做。因为谷歌可以随时更改格式。我在某处读到该用法:

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

但我不知道如何使用它在后端获取客户端 ID?我想使用前端正在使用的相同客户端 ID。

2. client id 实际上是什么?是单独的 unique id 还是 unique_id.timestamp 的组合。我应该从后端发送什么给 GA?

最佳答案

如果您查看使用推荐的 Google Analytics JavaScript 代码段的网站,您会看到它发送的客户端 ID 如下所示:

324729700.1423421585

存储在 _ga cookie 中的值如下所示:

GA1.3.324729700.1423421585

注意最后两部分是如何相同的,只有 GA1.3 部分不同。

您唯一需要关心的部分是发送到 Measurement Protocol 的客户端 ID ,所以如果您可以从服务器访问 _ga cookie,您应该去掉 GAX.X. 前缀,然后只发送其余部分。

But i read that it is not recommended. Because google can change the format anytime.

这不是真的。这些 cookie 的有效期为两年,因此它们可能不会更改。想想看,如果谷歌真的改变了它们,数百万网站的数据就会突然出错,所以他们没有充分的理由这样做。

FWIW,跟踪用户服务器端的最佳方法是使用 User ID功能,但如果您的用户未经过身份验证,则使用现有客户端 ID 完全没问题。

更新:

回答你的第二个问题,时间戳是客户端ID的一部分,不要去掉它。时间戳用于帮助使 ID“更加独特”。

关于javascript - 使用测量协议(protocol)向 GA 发送数据时如何获取客户端 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854752/

相关文章:

iphone - iOS:如果没有互联网可用,谷歌分析 SDK 是否会缓存所有数据以便稍后发送?

javascript - 在页面上显示未知的隐藏字段值

google-analytics - 将漏斗可视化报告用于事件类型的多个目标

java - 如何使用 Google Analytics 跟踪 java servlet 请求

javascript - 构建库并包含 CSS 文件,但不包含测试文件

javascript - 如何在 iris 沙发上进行跨域放置/发布请求?

google-analytics - 谷歌分析 API : what is the difference between a 'service application' and an 'installed application'

c# - 托管我自己的 Google Analytics 解决方案

javascript - d3 自定义时间间隔

javascript - Ember 循环遍历一系列复选框并获取选中的项目?