1

Je travaille donc sur une application Node.js qui interrogera Google Analytics à x en quelques secondes. J'ai installé un "compte de service" et ai converti la clé p12 en un fichier .pem. La configuration initiale ressemble à quelque chose comme ceci:Comment actualiser le jeton d'accès pour Google Analytics Reporting API v3

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); 
}); 

Je ne l'avais pas réalisé que les jetons de départ ont une date d'expiration de 1 heure; mais les jetons que je reçois ressemblent à ceci:

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

Ma question est, une fois que je reçois 401 invalidCredentials erreur, dois-je tout simplement re-autorisation pour obtenir un nouveau jeton d'accès pour pouvoir au sondage de Google Analytics? Je suis nouveau à JWT, et il semble que ce sera autorisant trop de fois. Y a-t-il une limite à cela?

Pour référence, j'utilise le Google API Node.js Client Library

Répondre

3

Oui, reconstruisez juste authClient que vous avez fait la première fois. Les comptes de service n'ont pas de jetons d'actualisation comme les autres flux OAuth, vous reconstruisez simplement l'authentification lorsque le jeton d'accès actuel expire.

+0

Merci pour la clarification! Bien fonctionner maintenant :) – victormejia

+0

savez-vous quelle est l'erreur lorsque la date d'expiration est atteinte pour les comptes de service? J'essaie de prouver le processus de mon application de sorte que si le jeton expire, il est automatiquement renouvelé pour le compte de service. Actuellement, même après l'expiration des hits, je ne vois pas une erreur et tout fonctionne toujours, ce qui semble étrange. – ingrid