4

我使用 Facebook JSSDK(即客户端)来验证我的网络应用程序的当前用户是谁。

代码看起来像这样:

    ... inited google analytics ...

       ...
       //events *before* authentication
       _gaq.push(['_trackEvent', 'TEST', 'EVENT BEFORE AUTH', 1]);   

       ... 
       //events *after* attempt at client-side authentication
       // callback might return after, say, 7 seconds
        authenticateUser(function(userInfo) {
             // setting visitor-level custom var
            _gaq.push(['_setCustomVar', 1, 'AUTHED-USER', userInfo, 1]);
            _gaq.push(['_trackEvent', 'TEST', 'EVENT AFTER AUTH', 1]);   
        });

(如果您尝试对此进行模拟,请确保在第一个事件触发后运行“setCustomVar”一段时间 - 因为您想给 GA“足够的时间”来发送第一个事件)

这会在自定义变量下创建以下跟踪事件的“问题”:

  1. 在其他事件已经发送到 Google Analytics 之后,来自 Facebook 的响应以及用户信息可能会返回 - 访问者级别的自定义变量似乎“解决了这个问题”,因为它似乎甚至是之前在此会话中跟踪的事件(在自定义之前var 已设置)列在自定义 var 值(在它们之后设置)的“下方”。

  2. 不同的用户可能会使用相同的浏览器来使用该应用程序。“覆盖”访问者级自定义变量的行为是有问题的 - 似乎从此浏览器发出的所有预授权事件都列在 LATEST custom-var 值下/分组。我尝试在覆盖之前发出 _deleteCustomVar 调用 - 但这并没有解决问题。

以不同的方式“解决”第一个问题 - 我想不使用访问者级别的自定义 var(而是页面/会话) - 但这意味着所有预授权事件都不会列在自定义 var 下 - 到解决这个问题,我想以某种方式将所有事件跟踪推迟到身份验证完成- 但这似乎.. umm.. 很奇怪。

另一种解决方案是使用我自己的“visitor-cookie”。但是 GA 已经这样做了,所以我不愿意重新发明轮子..(而且在用户切换之后,访问者的 cookie 将为预授权事件“撒谎”)

关于如何处理这种情况的任何建议?

4

2 回答 2

4

也许对每个 customVar 范围的一些解释会对您有所帮助。

访客级别简历

从您设置 CV 开始,访客级别的 CV 将适用于所有访问。如果您在单次访问期间更改了 CV,则该访问将在 GA 中的旧值下列出,但以后的访问将具有更新的 CV。

会话级简历

会话级别 CV 仅在当前会话中有效。在未来的会话中,它是空的。如果您在访问期间更改了会话级别 CV,GA 中报告的值是最后一个。

https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables#usage

会话中调用的最后一个会话级变量是用于该会话的变量。示例:如果在会话开始时插槽 #1 的 login=false 并且稍后插槽 #1 的 login=true,则会话设置为 true 以进行登录。

覆盖在同一会话中调用的任何先前设置的页面级变量。示例:如果插槽 #1 首先用于 category=sports,然后用于某个会话的 login=true,则不会为该会话记录 category=sports。

页面级简历

在你的情况下,你必须小心这个。当您使用页面级 CV 时,切勿将访问量视为指标,始终使用综合浏览量(如果您在设置 CV 后立即触发事件,则使用 totalEvens)。

使用哪一个?

现在回答你的问题。我首先会问自己是否有任何理由相信多个用户会使用同一个浏览器。我见过为信息亭(如计算机)设计的系统,在这种情况下,这是一个完全正确的观点。但除了您使用同一浏览器的用户数量可能与您的指标无关。

即使在使用相同浏览器的情况下,如果您使用会话级别的 CV,在用户设置它之前它始终是空白的,如果他在访问期间更改它,您将获得最新的,这可能是您想要的。使用会话级别 CV 的唯一缺点是,如果用户从不登录,您将没有该访问的 CV。

因此,如果您有任何理由相信您的受众很有可能与多个用户共享同一个浏览器,而不是使用会话级别的简历。否则,我会保留用户级别的 CV,因为该值更改的可能性很小,并且即使用户决定在特定访问期间不登录,您也会拥有 CV。

附言

我不知道您代码中的事件是否只是示例,但它们是错误的。事件中的前 3 个参数是字符串,您似乎传递了 2 个字符串和一个整数。

设置 CV 后,您肯定需要事件或综合浏览量,设置 CV 不会向 GA 发送点击,因此发送点击是绝对必要的。如果您发送事件只是为了注册 CV,您最好发送这样的事件:

_gaq.push(['_trackEvent', 'CV', 'set', '', 0, true]); 

这将触发一个非交互式事件,并且不会影响跳出率等指标。

于 2012-06-12T07:25:48.300 回答
0

所以谷歌考虑了这个问题,但认为这不是那么重要:

... 同样,如果两个不同的访问者使用相同的浏览器,但每个访问者都有一个单独的计算机帐户,则活动将记录在两个唯一的访问者 ID 下。另一方面,如果浏览器碰巧被共享同一计算机帐户的两个不同的人使用,则会记录一个唯一的访问者 ID,即使两个唯一的个人访问了该站点。

我确实找到了一个解决方案:在加载 GA 之前删除 __utma cookie。

于 2012-06-11T14:14:06.787 回答