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