public async Task UpdateAccessTokenIfExpired()
{
if (this.AccessToken != null && this.RefreshAccessTokenAt > DateTime.Now)
return;
var accessToken = await this.GetAccessTokenAsync()
.ConfigureAwait(false);
this.AccessToken = accessToken.Item1;
// expires_in の示す時刻より 30 秒早めに再発行する
this.RefreshAccessTokenAt = DateTime.Now + accessToken.Item2 - TimeSpan.FromSeconds(30);
}