App token becomes invalid everytime app refresh

When user login, my app stores the token in SecureStore in local storage. But when user refresh or exit the app, the app seems to log out on its own, causing the existing token to become invalid and requires user to sign in again. I use deleteAsync() to remove the token, but only when user click on the logout button. How can i make the token stays even when user exit the app?

This is my SecureStore codes:

import * as SecureStore from 'expo-secure-store';

// Store auth token

export const storeToken = async (token: string) => {

    if (token !== null) {

        try {

            await SecureStore.setItemAsync('token', token);

            console.log('Token successfully stored');

            console.log(token);

        } catch (e) {

            console.log(e);

        }

    }

    else {

        try {

            await SecureStore.deleteItemAsync('token');

            await SecureStore.setItemAsync('token', token);

            console.log('Token successfully updated')

        } catch (e) {

            console.log(e);

        }

    }

};

// Get auth token

export const getToken = async () => {

    try {

        let token = await SecureStore.getItemAsync('token');

        //console.log('token retrieved: ', token);

        if (token !== null) {

            return token;

        }

        else {

            return null;

        }

    } catch (e) {

        console.log(e);

    }

};

// Remove auth token

export const removeToken = async () => {

    let token = await SecureStore.getItemAsync('token');

    try {

        if (token !== null) {

            await SecureStore.deleteItemAsync('token');

        }

        else {

            return null;

        }

    } catch (e) {

        console.log(e);

    }

};

I call the removeToken() function only when user click on the Logout button.

1 Like