2012-05-08 7 views
10

He escrito un servicio RESTful node.js como servidor para http://www.cross-copy.net y me gustaría no solo rastrear el uso del cliente web sino también otros clientes (como la línea de comandos o las aplicaciones) que usan el servicio para la copia entre dispositivos. pegar. ¿Es posible insertar la API de JavaScript de Google Analytics en una aplicación node.js y hacer un seguimiento del lado del servidor?¿Cómo rastrear el uso en un servicio RESTful node.js con Google Analytics?

Respuesta

2

Como Brad razón triste, no había nada para el nodo ... Así que escribió un módulo nodejs adaptado para este estos últimos días y acaba de publicar en la NGP: node-ga

El módulo es todavía muy nuevo (apenas probarlo en la producción de un proyecto de mascotas), por lo que no duda en dar su opinión :)


+0

Esto es realmente divertido ... Sólo estaba dando los toques en un módulo que hace exactamente lo mismo este fin de semana! He estado usando una versión en producción, pero pensé que limpiaría un poco el código antes de lanzarlo allí. – Brad

+0

@Brad: Cuantos más módulos, mejor el usuario :) – red

+0

Ha, quizás. Por ahora, creo que el tuyo satisface la necesidad. ¡Buen trabajo! – Brad

2

No podrá simplemente colocar ga.js en su proyecto Node. Tiene que ser cargado en un navegador para funcionar correctamente.

No creo que hay algo ahí fuera para el nodo todavía (corríjanme si me equivoco!), Sino que debe ser capaz de adaptarse fácilmente a las clases PHP existentes para hacer el registro del lado del servidor:

https://developers.google.com/analytics/devguides/collection/other/mobileWebsites

Puede ver cómo se construye la URL para solicitar el GIF de seguimiento dentro de ga.php. Traduce ga.php a JS y estás listo.

$utmGifLocation = "http://www.google-analytics.com/__utm.gif"; 

// Construct the gif hit url. 
$utmUrl = $utmGifLocation . "?" . 
    "utmwv=" . VERSION . 
    "&utmn=" . getRandomNumber() . 
    "&utmhn=" . urlencode($domainName) . 
    "&utmr=" . urlencode($documentReferer) . 
    "&utmp=" . urlencode($documentPath) . 
    "&utmac=" . $account . 
    "&utmcc=__utma%3D999.999.999.999.999.1%3B" . 
    "&utmvid=" . $visitorId . 
    "&utmip=" . getIP($_SERVER["REMOTE_ADDR"]); 
1

probé nodo-ga, pero no obtuvo el seguimiento de eventos para trabajar. nodealytics hizo el trabajo.

2

Instalar análisis universales

npm install universal-analytics --save

En el archivo de rutas, requieren el módulo. (Reemplazar process.env.GA_ACCOUNT con cadena como 'UA-12345678-1')

// Init GA client 
var ua = require('universal-analytics'); 
var visitor = ua(process.env.GA_ACCOUNT); 

Ahora dentro de sus funciones de punto final, se puede realizar un seguimiento de una visita de página. (Reemplazar request.url con la cadena URL actual como '/api/users/1')

// Track pageview 
visitor.pageview(request.url).send(); 

Leer el documentation sobre AU para obtener más información sobre este módulo.

0

Escribí un script para consultar datos con Node.js de la API de informes principales de Google Analytics (v3). La secuencia de comandos y una descripción detallada de la configuración están disponibles here.

Aquí es la parte de la escritura:

'use strict'; 
var googleapi = require('googleapis'); 
var ApiKeyFile = require('mywebsiteGAapi-6116b1dg49a1.json'); 
var viewID = 'ga:123456700'; 

var google = getdefaultObj(googleapi); 
var Key = getdefaultObj(ApiKeyFile); 

function getdefaultObj(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 

var jwtClient = new google.default.auth.JWT(Key.default.client_email, null, Key.default.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null); 
jwtClient.authorize(function (err, tokens) { 
    if (err) { 
    console.log(err); 
    return; 
    } 
    var analytics = google.default.analytics('v3'); 
    queryData(analytics); 
}); 

function queryData(analytics) { 
    analytics.data.ga.get({ 
    'auth': jwtClient, 
    'ids': viewID, 
    'metrics': 'ga:users,ga:pageviews', 
    'start-date': 'yesterday', 
    'end-date': 'today', 
    }, function (err, response) { 
    if (err) { 
     console.log(err); 
     return; 
    } 
    console.log(JSON.stringify(response, null, 4)); 
    }); 
} 
Cuestiones relacionadas