Refreshing is a similar request to the code to token exchange.
You can use
To validate/check your token and decide if you need to renew. But I have code that does sub fetching every three hours, (and a User token is usually good for four hours), so I always refresh before I start my run(s)