Error exchanging code for token: ${tokenResponse.statusText}
`;
return;
}
const { access_token, id_token } = await tokenResponse.json();
// Fetch user info from Vipps
const userInfoResponse = await fetch('https://api.vippsmobilepay.com/vipps-userinfo-api/userinfo', {
headers: {
'Authorization': `Bearer ${access_token}`
}
});
if (!userInfoResponse.ok) {
document.body.innerHTML = `
Error fetching user info: ${userInfoResponse.statusText}
`;
return;
}
const userInfo = await userInfoResponse.json();
// Store user info securely in sessionStorage (consider cookies for production)
sessionStorage.setItem('vipps_sub', userInfo.sub);
sessionStorage.setItem('vipps_email', userInfo.email);
sessionStorage.setItem('vipps_name', userInfo.name || '');
// Clean up PKCE verifier
sessionStorage.removeItem('pkce_verifier');
// Redirect user to your JSM portal (replace with your actual portal URL)
window.location.href = 'https://hjelp.nettvis.no/servicedesk/customer/portal/1?sub=' + encodeURIComponent(userInfo.sub);
})();
}
})();