【问题标题】:How to refresh access token for Google Analytics Reporting API v3如何刷新 Google Analytics Reporting API v3 的访问令牌
【发布时间】:2015-06-19 08:57:18
【问题描述】:

所以我正在开发一个 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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的澄清!现在工作得很好:)
    • 您知道服务帐户到期时的错误是什么吗?我试图对我的应用程序的过程进行傻瓜式证明,以便如果令牌过期,它会自动为服务帐户续订。目前,即使在到期后,我也没有看到错误,一切仍在工作,这似乎很奇怪。
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2014-07-18
    • 2020-09-13
    相关资源
    最近更新 更多