如何刷新 Google Analytics Reporting API v3 的访问令牌
How to refresh access token for Google Analytics Reporting API v3
所以我正在开发一个 Node.js 应用程序,它将轮询 Google 分析 api 每 x
秒。我设置了一个 "Service Account",并将 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
是的,只需像第一次那样重建 authClient。服务帐户不像其他 OAuth 流程那样具有刷新令牌,您只需在当前访问令牌过期时重建身份验证即可。
所以我正在开发一个 Node.js 应用程序,它将轮询 Google 分析 api 每 x
秒。我设置了一个 "Service Account",并将 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
是的,只需像第一次那样重建 authClient。服务帐户不像其他 OAuth 流程那样具有刷新令牌,您只需在当前访问令牌过期时重建身份验证即可。