通过测量协议向Google Analytics(分析)发送跟踪数据时,客户端ID是什么?

我想使用Google的新测量协议来从我的服务器发送跟踪事件而不是JavaScript。

此页面说客户端ID是必需的: https : //developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required

此页面显示它是可选的: https : //developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor

另外,在这些文档中定义的格式是不同的 – 第一页给出一个整数作为一个例子,只是说这是“一个独特的价值”,而第二个链接说,它应该是一个UUID。

如果我在后台发送用户ID或生成的UUID,Google将如何知道将该访问者链接到现有的访问者会话? 看来我需要检索GA的内部引用到现有的用户。

任何帮助表示赞赏 – 谢谢!

整数或UUID

当您使用JavaScript跟踪时, cid等同于_utma cookie中的第二个值。 在js跟踪中,它是一个随机整数(由Math.round(2147483647 * Math.random())生成Math.round(2147483647 * Math.random()) )。 但它是作为一个string进行编码和发送的:所以你可以使用两种格式(整数或UUID)。

必需/可选

通过js跟踪,分析服务器会忽略发送缺less用户标识的请求。 所以假设它是必需的。

将networking访问者与测量协议操作相链接

如果您想要将后端用户与以前使用Analytics(分析)javascript ga.js进行跟踪的访问者关联起来,则可以从_utma cookie获取cid值。 但我不推荐它。 每次更改(terminal或浏览器更改,Cookie清理等)时,您将失去与客户先前操作的链接。

更新

提问时, analytics.js不存在。 cid现在存储在cookie _ga 。 你可以用JavaScript获得它:

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

在写这个的时候,当你从跟踪器中得到clientId的时候,就不会给你一个UUID,而是两个随机的“XY”格式的32位整数。 这个实现可能会在未来变成UUID。

或者用你自己的值来设置它(比如后端生成的UUID):

 ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'}); 

在Rails中:

  def save_google_analytics_client_id if current_user && cookies["_ga"] client_id = cookies["_ga"].split(".").last(2).join(".") if current_user.google_analytics_client_id != client_id current_user.google_analytics_client_id = client_id current_user.save end end end 

我使用快递和通用分析模块使用节点,并select使用_ga cookie中embedded的cid,而不是生成自己的cid服务器端。

我的server.js看起来像这样…

 app.use(function(req, res, next) { if(req.session && (!req.session.cid) && req.cookies._ga){ //Use the cid already embedded in the _ga cookie and save to session so I can access from socket routes var gaSplit = req.cookies._ga.split('.'); req.session.cid = gaSplit[2] + "." + gaSplit[3]; }; next(); }); 

然后,我可以做到这一点..

 ua = require('universal-analytics') var visitor = ua('UAXXX', req.session.cid) 

HTH