Вы хотите сохранить access_token, refresh_token, token_expire_time и last_write в базе данных. last_write - это время создания токена доступа, а token_expire_time - сколько времени истекает токен доступа в минутах или секундах для точности времени.
оттуда вы просто сравниваете (last_write time + token_expire_time) с время сейчас.
Не забывайте всегда использовать DateTime.UtcNow при сравнении и сохранении времени в базе данных или в других часовых поясах с его сбросом, и оно не будет должным образом обновлять sh.
Вот пример
Класс базы данных
public class Token
{
public int Id { get; set; }
public string AccessToken { get; set; }
public string RefreshToken { get; set; }
public DateTime LastWrite { get; set; }
public int Expiration { get; set; }
}
Функция для проверки refre sh:
// call this to get the token before making API call
public static async Task<string> GetAccessToken(Token token)
{
string accessToken;
if (token.LastWrite.AddSeconds(token.Expiration) <= DateTime.UtcNow)
{
// refresh and update the database with the new tokens/expiration
}
else
{
accessToken = token.AccessToken;
}
return accessToken;
}