title: Google Ads API says "Token has been expired or revoked" despite using a refresh token
body: <p>I've set up the whole Google Ads API according to this manual here: <a href="https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en" rel="nofollow noreferrer">https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en</a></p>
  <p>I got my refresh token and put it in my google-ads.yaml file which looks exactly like this:
  <a href="https://github.com/googleads/google-ads-python/blob/master/google-ads.yaml" rel="nofollow noreferrer">https://github.com/googleads/google-ads-python/blob/master/google-ads.yaml</a>. I also put my client_id, developer_token and client_secret at the corresponding spots in the file.</p>
  <p>Everything worked out and I could for example ask for all campaigns:
  <a href="https://developers.google.com/google-ads/api/docs/samples/get-campaigns#python" rel="nofollow noreferrer">https://developers.google.com/google-ads/api/docs/samples/get-campaigns#python</a>. Also I could use other services of the API.</p>
  <p>Each time I use the API I access it via the client using the following code:</p>
  <pre><code>from google.ads.google_ads.client import GoogleAdsClient
  client = GoogleAdsClient.load_from_storage(path_to_google_ads_yaml_file)
  </code></pre>
  <p>As I already said it worked.</p>
  <p>A few days later I tried to connect again and I got the following error:</p>
  <pre><code> “error”: “invalid_grant”, “error_description”: “Token has been expired or revoked.”
  </code></pre>
  <p>So I did the process of getting a new refresh token again (<a href="https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en" rel="nofollow noreferrer">https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en</a>) such that everything worked out again.</p>
  <p>One day later I got the same error again. So my question is: What is the purpose of the refresh token? I thought it allows me to access the API without ever having to ask for a new token or refresh token!?</p>
  <p>Now, I again tried to connect to the API once more (although it didn't work last time) and now I got an even worse and new error:</p>
  <pre><code>'invalid_grant: Bad Request', '{\n  &quot;error&quot;: &quot;invalid_grant&quot;,\n  &quot;error_description&quot;: &quot;Bad Request&quot;\n}'
  </code></pre>
  <p>So things are getting even more complicated...</p>