gpt4 book ai didi

c# - 仅在必要时刷新访问 token

转载 作者:行者123 更新时间:2023-12-02 15:35:00 24 4
gpt4 key购买 nike

关注 previous question posted here ,我正在尝试从服务器应用程序使用日历服务。

我“自己”管理身份验证流程,并将用户的访问 token 和刷新 token 存储在数据库中。现在我想我可以使用 .NET 客户端示例中显示的方法来使用 CalendarService。但我仍然想知道什么是 IAuthorizationState GetAuthorization(WebServerClient client) 方法的最佳实现,以便仅在需要时请求刷新访问 token 。我当前的天真实现每次都会刷新 token :

private IAuthorizationState GetAuthorization(WebServerClient client)
{
IAuthorizationState state = new AuthorizationState(new[] { "profile", CalendarService.Scopes.Calendar.GetStringValue() });
state.AccessToken = _accessToken;
state.RefreshToken = _refreshToken;

client.RefreshToken(state);

return state;
}

...但我确信有更聪明的方法来做到这一点!

提前致谢。

最佳答案

您可以使用多种流,具体取决于性能需求、带宽、 session 时长等。

  1. 您可以不主动刷新,让交易失败 401,然后获取新 token 并重试交易。有效利用带宽和处理,但会导致交易延迟。
  2. 您可以记下 token 的到期时间,并创建一个计时器任务来刷新 token ,比如在到期前 1 分钟刷新 token 。提供最佳性能,因为始终有可用的 token ,但会消耗带宽和处理时间。
  3. 在尝试交易之前,请检查 token 超时。如果它是过期了,换一个新的,然后提交交易。如果它有 < 5分钟生活,使用它并在交易完成后,刷新 token 以备下次使用。这(至少对于我的用例)在高效事务和不进行过多冗余刷新之间提供了最佳平衡。

关于c# - 仅在必要时刷新访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19313339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com