Hi,
In addition to the tokens, are you using the same client_id and client_secret in production that you're using locally? If not, then your production process won't be able to retrieve a new access_token using that refresh_token.
If that's not the source of the problem, could you try
enabling logging in production to see if any more details are logged around the time when the
AdWordsCredentialsExpiredException occurs?
Thanks,