So I've been trying to find a way to call the google prompt by using my own button in React, and not googles, cause it doesn't fit with the styles of the platform that I am busy building
So, I followed this wonderful persons idea https://stackoverflow.com/a/71431475/5413196 (the second part of it and created the functions as he states and a button that calls google.accounts.id.prompt(); onClick and it worked! I was very pleased with the result, but after testing it a few times I realized that the google prompt will only show when you sign in with an account but when you click on the cancel button or X in the prompt the prompt goes away and if you click the custom (my button) button again it doesnt bring up the prompt.
I had a look in my console for any errors, investigated local storage and saw that there's a cookie g_state:"{"i_l":1,"i_p":1234567890}" deleted it and tried again, magically the prompt pops up and I can select an account, checked the localstorage and saw that there is a cookie g_state:"{"i_l":0}" when a google account has been selected.
so I tested and clicked cancel X on the prompt and the cookie is set to g_state:"{"i_l":1,"i_p":1234567890}" and tried triggering the promt again - nothing...
so I want to create a if statement that checks if the cookie exist g_state:"{"i_l":1,"i_p":1234567890}" and if it does then delete it and trigger the google.accounts.id.prompt();
but this feels a bit hacky & messy, do any of you know how I can get the prompt to pop up every time the user clicks the button without doing the if statement check and deleting the cookie, etc ?
the code:
const googleCallBack = (response) => {
const token = response.credential;
console.log('token: ', token);
};
const googlePrompt = () => {
/* global google */
google.accounts.id.initialize({
client_id: process.env.GOOGLE_CLIENT_ID,
callback: googleCallBack,
});
google.accounts.id.prompt();
};
<button
onClick={googlePrompt}
value="Log in with Google"
/>