1

だから私は、Google アナリティクス APIxを数秒ポーリングする Node.js アプリに取り組んでいます。「サービス アカウント」をセットアップし、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 アナリティクスからポーリングできるように新しいアクセス トークンを取得するために再承認するだけですか? 私はJWTを初めて使用しますが、これは何度も承認するようです。これに制限はありますか?

参考までに、Google API Node.js Client Libraryを使用しています。

4

1 に答える 1

4

はい、最初に行ったように authClient を再構築するだけです。サービス アカウントには、他の OAuth フローのような更新トークンはありません。現在のアクセス トークンの有効期限が切れたときに認証を再構築するだけです。

于 2015-04-13T22:23:04.703 に答える