Skip to content
Init is coming / May 19 - 23
Back

A full logout for users logged in via Google OAuth2

  • 0
  • Auth
  • Web
Los Feliz
2 Apr, 2025, 01:18

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.

TypeScript
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);
    }
}
TL;DR
Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more