Fixed duplicate oauth fetch along with DRY improvement #1858

Fixes the duplicate Oauth issue.
It's called both from OauthUtils and from GoogleOauth2CallbackServlet. GoogleOauth2CallbackServlet only runs on the first run, however, and it generates a RefreshTokenEvent. OauthUtils waits for that event before ever proceeding, so while it's from a different thread there's zero chance of concurrent access. OauthUtils will in turn only call this method when the access token has expired, which will only happen well after GoogleOauth2CallbackServlet has fetched the original oauth token on the first run.