Rank 2: Process
I have a web app in reactjs that uses the Google login that is integrated into Appwrite for user login. I use createOAuth2Token() to login to their account. And I use createSession() to create a session within the Appwrite environment. To logout, I use deleteSession(). This approach of mine, however, only deletes the user's in process session within the Appwrite environment. It does not logout the user from their google account. I know this, because after clicking 'logout, when the user tries to log back in, they are immediately signed in without being prompted to enter their Google credentials again.
I logged the details of the session, and I saw that providerAccessToken is an empty string. Since providerAccessToken is an empty string for Googe OAuth2 logins, I assumend that the session $id can replace it. However, it did not help. Google returns Bad Request and does not logout the user from Google.
export const deleteUserSession = async () => {
const currentSession = await account.getSession('current'); const accessToken = currentSession.$id; console.log('currentSession', currentSession); console.log('accessToken', accessToken); try { if (currentSession && accessToken) { await account.deleteSession(currentSession.$id); console.log('Session deleted successfully');
await fetch('https://accounts.google.com/o/oauth2/revoke?token=' + accessToken, { method: 'GET', mode: 'no-cors', });
console.log('LOGGED OUT SUCCESSFULLY.'); } console.log('REDIRECTING TO /'); } catch (error) { console.error('Error deleting the session:', error); }}