2013-09-08 12 views
6

Używam nodejs i chcę wyświetlić niektóre dane z google analytics.Uzyskiwanie dostępu do google analytics za pośrednictwem nodejs

w Google API Explorer, mam znaleźć ten link, aby moje dane:

https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXXX&start-date=2013-08-17&end-date=2013-09-15&metrics=ga%3Avisits&key={YOUR_API_KEY} 

Jednakże, jeśli dostęp do tego URL uzyskać:

{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}} 

Jak mogę przekazać moje logowanie przez adres URL, a następnie uzyskać dostęp do moich danych?

Dzięki!

+0

Czy wstawiasz tutaj swój klucz API? '& key = {YOUR_API_KEY}' – datasage

+0

Tak, zrobiłem. Ale wydaje się, że potrzebowałem tokena. Używam prośby o połączenie: https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXXX88&metrics=ga:visits&start-date=2013-08-17&end-date=2013-09-15&access_token= XXXXXXXX i access_type_token = okaziciel' i wszystko działa. – sayam

+0

Ale kiedy próbuję odświeżyć token, używając żądania na 'https: //accounts.google.com/o/oauth2/token? Client_secret = XXX & grant_type = refresh_token & refresh_token = YYYY & client_id = ZZZZ' otrzymuję komunikat" error, invalid request. " – sayam

Odpowiedz

0

Czy ustawiasz Content-Type na application/x-www-form-urlencoded?

Jeśli nadal zablokowane, to warto zauważyć, że Google wydała bibliotekę nodejs klienta (alfa) tutaj: https://github.com/google/google-api-nodejs-client

+0

W końcu udało mi się, używając request.get. Ale nadal, będę wyglądać w tej bibliotece, dzięki. – sayam

11

Z konsoli API Google, trzeba włączyć API Analytics, a wreszcie skonfigurować Konto usługi, pobierz plik *.p12.

Od tego pliku *.p12, trzeba przekonwertować go do pliku *.pem, aby to zrobić, wykonaj następujące czynności:

openssl pkcs12 -in XXXXX.p12 -nocerts -nodes -out XXXXX.pem

Zostaniesz poproszony o podanie hasła, należy notasecret

Teraz masz potrzebny plik *.pem, a adres e-mail konta jest wyświetlany w konsoli Google api pod numerem EMAIL ADDRESS.

Nie zapomnij dodać ten adres do konta analitycznego (patrz: Analytics Google API Error 403: "User does not have any Google Analytics Account")

powinien być dobry, aby przejść z następującym fragmencie:

var googleapis = require('googleapis'), 
    JWT = googleapis.auth.JWT, 
    analytics = googleapis.analytics('v3'); 

var SERVICE_ACCOUNT_EMAIL = '[email protected]'; 
var SERVICE_ACCOUNT_KEY_FILE = __dirname + '/key.pem'; 


var authClient = new JWT(
    SERVICE_ACCOUNT_EMAIL, 
    SERVICE_ACCOUNT_KEY_FILE, 
    null, 
    ['https://www.googleapis.com/auth/analytics.readonly'] 
); 

authClient.authorize(function(err, tokens) { 
    if (err) { 
     console.log(err); 
     return; 
    } 

    analytics.data.ga.get({ 
     auth: authClient, 
     'ids': 'ga:XXXXXXXX', 
     'start-date': '2015-01-19', 
     'end-date': '2015-01-19', 
     'metrics': 'ga:visits' 
    }, function(err, result) { 
     console.log(err); 
     console.log(result); 
    }); 
}); 
0

@ xavier.seignard I Follow Your fragment, ale z modyfikacjami, ponieważ używam pliku json zamiast p12 (kod poniżej). Ale mam wątpliwości, rozwijam spokojny backend w nodejs. W takim przypadku nie jest konieczne umieszczenie funkcji ga.get w aplikacji app.use() w celu uzyskania informacji analitycznych dla każdego wysłanego żądania?

var key = require('filename.json'); 
var authClient = new JWT(
key.client_email, 
null, 
key.private_key, 
['https://www.googleapis.com/auth/analytics.readonly']); 
Powiązane problemy