如何刷新Google Analytics Reporting API v3的访问令牌

时间:2015-04-13 21:46:13

标签: node.js google-analytics google-api jwt google-api-nodejs-client

所以我正在开发一个Node.js应用程序,该应用程序将在x秒内轮询Google Analytics api。我已经设置了"服务帐户",并将p12密钥转换为.pem文件。初始设置如下所示:

var authClient = new google.auth.JWT(authData.serviceEmail, authData.keyFile, null, authData.scope, '');

authClient.authorize(function(err, tokens) {
  if (err) {
    winston.log('error', 'Error authorizing with GA', {error: err});
    return;
  }

  setInterval(function() {
    analytics.data.realtime.get({
      'auth': authClient,
       ...
    }, function (err, body) {
        // getting 401 error here
    })
  }, 20000);
});

我没有意识到初始令牌的有效期为1小时;但是我收到的代币看起来像这样:

{
  access_token: ...,
  token_type: 'Bearer',
  expiry_date: NaN,
  refresh_token: 'jwt-placeholder
}

我的问题是,一旦我收到401 invalidCredentials错误,我是否只是重新授权获取新的访问令牌以便能够从Google Analytics进行投票?我是JWT的新手,这似乎会被授权太多次了。对此有限制吗?

供参考,我使用Google API Node.js Client Library

1 个答案:

答案 0 :(得分:3)

是的,只是像第一次那样重建authClient。服务帐户没有像其他OAuth流一样的刷新令牌,您只需在当前访问令牌过期时重建身份验证。