// 1. User logs in via OAuth
const authCode = await userLogin();
// 2. Get tokens
const response = await fetch("https://api.noorle.com/oauth/token", {
method: "POST",
body: JSON.stringify({
grant_type: "authorization_code",
code: authCode,
client_id: "my-web-app"
})
});
const { access_token, refresh_token, expires_in } = await response.json();
// 3. Store tokens
sessionStorage.setItem("access_token", access_token);
sessionStorage.setItem("refresh_token", refresh_token);
sessionStorage.setItem("expires_at", Date.now() + expires_in * 1000);
// 4. Make API calls
async function callAPI(endpoint) {
let token = sessionStorage.getItem("access_token");
// Check if token expired
if (Date.now() > sessionStorage.getItem("expires_at")) {
token = await refreshToken();
}
return fetch(`https://api.noorle.com${endpoint}`, {
headers: {
"Authorization": `Bearer ${token}`
}
});
}
async function refreshToken() {
const response = await fetch("https://api.noorle.com/oauth/token", {
method: "POST",
body: JSON.stringify({
grant_type: "refresh_token",
refresh_token: sessionStorage.getItem("refresh_token"),
client_id: "my-web-app"
})
});
const { access_token, refresh_token, expires_in } = await response.json();
sessionStorage.setItem("access_token", access_token);
sessionStorage.setItem("refresh_token", refresh_token);
sessionStorage.setItem("expires_at", Date.now() + expires_in * 1000);
return access_token;
}
// 5. Use in requests
const agents = await callAPI("/agents");
// Auto-refreshes token if needed