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