Como atualizar o token de acesso para um longo processo usando Javascript e Node.js.
Neste tópico, simularemos como atualizar o token recuperado da API externa, com base em sua data de expiração, para evitar erro de token inválido.
Primeiras coisas primeiro, certifique-se de ter Node.jsinstalado em sua máquina.
Então, vamos criar nosso arquivo js, por exemplo:process.js
/**
* Make token
* @param {number} length Token length
* @param {number} expires_in Token expiration in seconds, default: 5 secs
*
* @return {Array}
*/
const makeToken = (length, expires_in = 5) => {
let token = '';
const characters =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (var i = 0; i < length; i++) {
token += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return [token, expires_in];
};
/**
* Utility to simulate asynchronous call
* @param {number} milliseconds Time to wait in ms
*
* @return {Promise}
*/
const delay = (milliseconds) =>
new Promise((resolve) => setTimeout(resolve, milliseconds));
/** Process */
(async () => {
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const processStartDate = Date.now();
let renewTokenDate = processStartDate;
let [token, expires_in] = makeToken(40);
let tokenIsInvalid = expires_in - 1 <= (Date.now() - renewTokenDate) / 1000;
await delay(1000);
console.log('token >', token);
for (const row of data) {
if (tokenIsInvalid && token) {
console.log(`token expired > ${token}`, tokenIsInvalid);
renewTokenDate = Date.now();
[token, expires_in] = makeToken(40);
await delay(1000);
console.log('got new token', token);
}
console.info('token is valid >', !(tokenIsInvalid && token));
console.log('row value >', row);
await delay(1000);
console.log('DATA FETCHED for >', row);
}
const processEndDate = Date.now();
console.log('DONE in ', (processEndDate - processStartDate) / 1000, 's');
})();
Portanto, dentro do loop For antes de chamar a delayfunção, verificamos a validade do token comparando seu valor de expiração com a substrução do momento atual retornado por Date.now()e a última vez que obtivemos um token válido.
Se o token ainda for válido, iremos ignorar a condição if e continuar nosso processo, senão iremos gerar um novo token válido para evitar qualquer tipo de erro de autorização.
Espero que isto ajude :)





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)