Gurudeep Naik
12/01/2023, 10:33 AMconsole.error("Error requesting access token:", error);
const jwtHeader = {
alg: "PS256",
typ: "JWT",
kid: CERTIFICATE_ID,
};
const jwtPayload = {
iss: CONSUMER_KEY,
scope: ["restlets", "rest_webservices"],
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 3600,
aud: TOKEN_URL,
};
const token = jwt.sign(jwtPayload, CERTIFICATE_PRIVATE_KEY, {
algorithm: "PS256",
header: jwtHeader,
});
const requestData = new URLSearchParams();
requestData.append("grant_type", "client_credentials");
requestData.append("client_assertion_type", CLIENT_ASSERTION_TYPE);
requestData.append("client_assertion", token);
const getAccessToken = async () => {
try {
const response = await <http://axios.post|axios.post>(TOKEN_URL, requestData, {
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
});
if (response.status === 200) {
const accessToken = response.data.access_token;
return accessToken;
} else {
console.error(
"Error getting access token:",
response.status,
response.data
);
}
} catch (error) {
console.error("Error requesting access token:", error);
}
};
const api = axios.create({
baseURL: process.env.NETSUITE_URL,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.NETSUITE_TOKEN}`,
},
});
api.interceptors.response.use(
(response) => {
const expirationTimeMillis = jwtPayload.exp * 1000;
console.log(
"Token expiration time:",
new Date(expirationTimeMillis).toLocaleString()
);
return response;
},
async (error) => {
const originalRequest = error.config;
if (
error.response &&
error.response.status === 401
// &&!originalRequest._retry
) {
originalRequest._retry = true;
const accessToken = await getAccessToken();
if (accessToken) {
api.defaults.headers.common["Authorization"] = `Bearer ${accessToken}`;
originalRequest.headers["Authorization"] = `Bearer ${accessToken}`;
return api(originalRequest);
} else {
return Promise.reject("invalid Access Token");
}
}
return Promise.reject(error);
}
);
battk
12/01/2023, 11:05 AMbattk
12/01/2023, 11:06 AMbattk
12/01/2023, 11:08 AMGurudeep Naik
12/01/2023, 2:19 PM