javascriptnode.jsauthenticationgoogle-apigoogle-realtime-api

Get Current Users: Google Real Time API with NodeJS & gtoken: "Invalid Credentials"


I would like to use a NodeJS Server to obtain the current users on my Website from Google Analytic using the Real Time Reporting API:

So far I try to do this via an HTTP request with request and gtoken. The getToken-Part works. I get a token. But the HTTP-Request doesnt work. I get an "Invalid Credentials" Error with Code 401.

Does anybody have an idea what to do? Maybe this is the completely wrong approach to get these data.

var received_token;
var url = "https://www.googleapis.com/analytics/v3/data/realtime";
var paramsObject = { ids:"ga:123456789"};

const gtoken = new GoogleToken({
      keyFile: 'pathToServiceAccountJSONKeyFile:',
      scope: ['https://www.googleapis.com/auth/analytics.readonly']
});

gtoken.getToken(function(err, token) {
  if (err) {
        console.log(err);
        return;
  }
  received_token = token;
  console.log(token);
  request({
        url:  url,
        qs:   paramsObject,
        headers: {
          'Authorization': received_token
    }
  }, function(err, response, body) {
    if(err) { console.log(err); return; }
    // console.log(response);
    console.log(body);
});

Solution

  • I found the error :-)

    In the Authorization Header "Bearer" was missing, now it works like charm and I receive data from the Google Real Time API.

    headers: {
        'Authorization': "Bearer " +received_token
         }