cryptotalkapi-token-mgmt
Version:
This package helps you to refresh the access token every 12 hours. You need access_token to access APIs provided by cryptotalk. All APIs are free to use. More information can be found here: https://cryptotalk.gitbook.io/
50 lines (41 loc) • 1.67 kB
JavaScript
const fetch = require('node-fetch');
let access_token = null;
let refresh_token = null;
function startRefresh(_access_token, _refresh_token){
access_token = _access_token;
refresh_token = _refresh_token;
forceRefresh();
setInterval(_refresh, 12*60*60*1000);
}
function forceRefresh(){
if(!refresh_token){
console.error("Refresh token has not been initialized, Please create access & refresh token by visting APIs (https://cryptotalk.finance)");
}
_refresh();
}
function getAccessToken(){
if(!access_token){
console.error("Access token has not been initialized, Please create access token by visting APIs (https://cryptotalk.finance)");
}
return access_token;
}
async function _refresh(){
const params = new URLSearchParams();
const URL = "https://aaveonmobile-home.auth.us-east-2.amazoncognito.com/oauth2/token";
try {
params.append('client_id', '5b6893vo53h5jo7jk8prhphei4');
params.append('grant_type', 'refresh_token');
params.append('refresh_token', refresh_token);
const response = await fetch(URL, {method: 'POST', body: params});
const data = await response.json();
if(data.access_token){
console.log("Access token refreshed successfully, Expires after : " + (data.expires_in/3600) + " hours");
access_token = data.access_token;
}
} catch (error) {
console.error("CryptoTalk API Error : " + URL + params);
console.error(Error(error));
}
}
exports.getAccessToken = getAccessToken;
exports.startRefresh = startRefresh;