I’ve had a decent amount of issues with n8n’s Oauth2 implementation. Even when using the generic Oauth2 credential type and setting things up correctly. I’ve had tokens not get refreshed for seemingly no good reason, and could prove n8n was not refreshing properly.
This is one of the reasons why I wish n8n would give Variables to everyone, would allow for much easier manual Oauth2 implementations with workflows.
When this happens I setup a refresh workflow and store the tokens somewhere safe and just fetch when needed.