Google OAuth2: Wann und wie wird ein Aktualisierungstoken verwendet?

Ich habe eine installierte C # -App mit funktionierendem Code, der den Autorisierungscode erhält und ihn gegen ein Zugriffstoken eintauscht. Ich speichere das Refresh-Token ab. Irgendwann muss ich es verwenden, um ein neues Zugriffstoken zu erhalten. Angenommen, ich rufe regelmäßig die folgende Methode auf, um die Dateien zu überwachen, die für mein Drive-Konto freigegeben wurden.

   /// <summary>
   /// Retrieve a list of File resources.
   /// </summary>
   /// <param name="service">Drive API service instance.</param>
   /// <returns>List of File resources.</returns>
   public static List<File> retrieveAllFiles(DriveService service) {
      List<File> result = new List<File>();
      FilesResource.ListRequest request = service.Files.List();
      request.Q = "sharedWithMe and trashed=false";
      do {
         try {
            FileList files = request.Fetch();

            result.AddRange(files.Items);
            request.PageToken = files.NextPageToken;
         } catch (Exception e) {
            Console.WriteLine("An error occurred: " + e.Message);
            request.PageToken = null;
         }
      } while (!String.IsNullOrEmpty(request.PageToken));
      return result;
   }
}

Ich gehe davon aus, dass der Aufruf von service.Files.List () irgendwann fehlschlagen wird. Woher weiß ich, dass es aufgrund eines abgelaufenen Zugriffstokens fehlgeschlagen ist und wie lautet der Code für die Verwendung des Aktualisierungstokens? Ich habe bereits einen Code (unten), von dem ich gelernt habeHier um das Aktualisierungstoken zu verwenden. Wird diese Methode aufgerufen, wenn das Zugriffstoken abläuft?

    private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
   {
      // If we already have a RefreshToken, use that
      if (!string.IsNullOrEmpty(RefreshToken))
      {
         state.RefreshToken = RefreshToken;
         if (arg.RefreshToken(state)) {
            mTextBox.Text = "RF: " + RefreshToken;
            return state;
         }
      }
      // authCode is a TextBox on the form
      var result = arg.ProcessUserAuthorization(mTextBox.Text, state);
      RefreshToken = state.RefreshToken;
      return result;
   }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage