我一直在使用 IAuthorizationState (AuthorizationState) 和 WebServerClient,我正在尝试找出持久化授权状态信息的正确方法,以便在检索时框架可以就需要进行什么调用做出最佳决定以获得Web 服务调用所需的访问令牌。
假设我从头开始并且数据库中还没有保留任何令牌,我将执行以下步骤:
WebServerClient.PrepareRequestUserAuthorization
- 用户被发送到谷歌。url 包含刷新令牌的离线参数ProcessUserAuthorization
- 我从谷歌取回代码参数(授权码)并调用以获取 AccessToken 和 RefreshToken 以及到期日期
如果我现在想坚持这一点,我应该坚持整个对象以便日期也坚持下去还是两个令牌就足够了?
当用户执行另一个需要授权状态信息的操作时,我现在可以进行数据库查找以检索令牌。检索令牌后是否总是需要调用 RefreshAuthorization 方法,还是应该执行自己的逻辑来查看日期是否已过期(假设我也保留了这些日期)?
更新 1:
我最终将日期保留在数据库中,因此 IAuthorizationState 可以完全恢复到其最后状态。然后我打电话
client.RefreshAuthorization(auth, TimeSpan.FromSeconds(MinRefreshTimespanInSec));
如果令牌最终被刷新,则返回 true;如果令牌仍然有效且不需要刷新,则返回 false。变量 auth 是从 DB 恢复的授权状态。