token = new Promise((resolve, reject) => {
google.accounts.id.initialize({
client_id,
prompt_parent_id: "g-prompt",
auto_select: true,
callback: async (response) => {
if (response && response.credential) {
const token = response.credential;
const credential = parseJwt(token);
const expirationTime = new Date(Date.now() + credential.exp);
console.log(
`Google token expires at ${expirationTime.toLocaleString()}`
);
authButton.style.display = "none";
resolve(token);
return Promises.when(expirationTime).then(() => {
authButton.style.display = "block";
google.accounts.id.prompt();
});
}
reject(response);
}
});
const buttonElement = document.getElementById("g-button");
google.accounts.id.renderButton(buttonElement, {
theme: "outline",
size: "large"
});
google.accounts.id.prompt((notification) => {
if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
google.accounts.id.renderButton(buttonElement, {
theme: "outline",
size: "large"
});
}
});
})