Facebook JSSDK(つまりクライアント側)を使用して、Webアプリの現在のユーザーが誰であるかを確認します。
コードは次のようになります。
... 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に最初のイベントを送信するのに十分な時間」を与えたいからです)
これにより、カスタム変数の下でイベントを追跡する次の「問題」が作成されます。
他のイベントがすでにGoogleAnalyticsに送信された後、ユーザーの情報を含むFacebookからの応答が返される可能性があります-訪問者レベルのカスタム変数は、このセッションで以前に追跡されたイベント(カスタムの前)でさえあるように見えるため、「これを解決する」ようですvarが設定された)は、カスタムvar値(それらの後に設定された)の「下」にリストされます。
別のユーザーが同じブラウザを使用してアプリを使用する場合があります。訪問者レベルのカスタム変数を「上書き」する動作には問題があります。このブラウザから発行されたすべての事前認証イベントは、LATESTcustom-var値の下に一覧表示/グループ化されているようです。上書きする前に_deleteCustomVar呼び出しを発行しようとしましたが、問題は解決しませんでした。
最初の問題を別の方法で「解決」するために-訪問者レベルのカスタム変数(むしろページ/セッションのもの)を使用しないことを考えました-しかし、これはすべての事前認証イベントがカスタム変数の下にリストされないことを意味します-Toこれを解決する私は、認証が行われた後、すべてのイベント追跡をどういうわけか延期しようと思いました-しかし、これは..うーん..奇妙なようです。
別の解決策は、私自身の「visitor-cookie」を使用することです。しかし、GAはすでにそれを行っているので、私は車輪の再発明をするのをためらっています。
このシナリオに取り組む方法について何か提案はありますか?