Google OAuth2: когда и как использовать токен обновления

У меня установлено приложение c # с работающим кодом, которое получает код авторизации и обменивает его на токен доступа. Я храню токен обновления. Я знаю, что в какой-то момент мне нужно использовать его, чтобы получить новый токен доступа. Позволять'Предположим, что я периодически вызываю следующий метод для отслеживания файлов, которые были предоставлены моей учетной записи Drive.

   /// 
   /// Retrieve a list of File resources.
   /// 
   /// Drive API service instance.
   /// List of File resources.
   public static List retrieveAllFiles(DriveService service) {
      List result = new List();
      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;
   }
}

Я предполагаю, что в какой-то момент вызов service.Files.List () не удастся. Как узнать, что произошел сбой из-за маркера доступа с истекшим сроком действия, и какой код используется для маркера обновления? У меня уже есть некоторый код (ниже), который я почерпнул изВот использовать токен обновления. Будет ли вызван этот метод после истечения срока действия токена доступа?

    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;
   }

Ответы на вопрос(4)

Ваш ответ на вопрос