Google API invalid request after access token expires
<p><a href="https://stackoverflow.com/questions/10827920/not-receiving-google-oauth-refresh-token?noredirect=1&amp;lq=1#comment24383767_10857806">This</a> is the comment that led me to ask this question.</p>

<p>I've got a server side Node.js app, using googleapis package.  Users log in with their Google accounts, and I store tokens in their session.  The credentials I get are as follows</p>

<pre><code>{ access_token: '&lt;AN ACCESS TOKEN&gt;',
  token_type: 'Bearer',
  id_token: '&lt;A LONG ID TOKEN&gt;',
  expiry_date: &lt;A TIMESTAMP&gt; } // why do some places say there's an expires_in instead of this
</code></pre>

<p>There's no <code>refresh_token</code> because the users have already logged in for the first time and clicked accept, and I didn't store the refresh token (looks like I should've).</p>

<p>So, when the <code>expiry_date</code> is reached, if the user tries to make a request for us to save something to their google drive, I get an error message:</p>

<pre><code>{ [Error: invalid_request] code: 400 } // ...no further details
</code></pre>

<p><strong>My 2-part question:</strong></p>

<ul>
<li><p>I assume I'm getting that error message because the access_token in my OAuth client object is expired (because the call works fine before the token expires).  Is this correct?  Why is the error message not more detailed?</p></li>
<li><p>In the linked answer at the top, the solution is to force the accept prompt again, get the refresh token, and store it permanently, and use it to get a new access token when it expires.  Why is this a better option than just checking if the token is expired, and having a user reauthenticate when we want to make a call to the API?  Which is the "correct" way to ensure that my logged in users can always make the drive API call to save their documents?</p></li>
</ul>