即使定期报告我的活动,应用程序也会在 1 小时后过期

Posted

技术标签:

【中文标题】即使定期报告我的活动,应用程序也会在 1 小时后过期【英文标题】:Application expires after 1h even when regularly reporting my activity 【发布时间】:2015-04-30 08:11:16 【问题描述】:

之前我遇到了一个问题,即我的 UCWA 申请在一段时间后过期。作为这个问题的解决方案,我发现我应该时不时地提出一个请求来让它保持活力。我决定设置一个间隔,每 3 分钟请求一次reportMyActivity 资源。

但是,无论如何,我的申请总是在 1 小时后过期。有什么解决办法吗?或者,使用示例库在不离开网站的情况下重新创建应用程序的推荐方法是什么?

谢谢。

【问题讨论】:

当您说 1 小时后过期时,您的意思是在该时间范围之后的任何请求都会导致先前已知资源上的 404 错误?您是否在事件通道上执行 GET 请求?如果是这样,您是否在应用程序过期时看到数据? 到期我的意思是 401 Unauthorized ... 现在你提到它我认为这不是 UCWA 的问题,而是身份验证的问题。无论哪种方式,如果我继续每 3 分钟报告一次活动,我的应用程序会过期(我的访问令牌会在 8 小时后过期)吗?我是否需要报告我的活动以使应用程序保持活动状态,或者仅在事件通道上侦听并因此不时发出请求(最多 10 分钟间隔)就足够了?顺便说一句,我使用被动身份验证来进行身份验证。 reportMyActivity 请求是您应该如何让应用程序在其令牌持续时间(恰好为 8 小时)内保持活动状态。 8 小时后对任何资源的请求应导致 401/404 指示令牌已过期并且应用程序已被回收。监听事件通道不足以让应用程序保持活动状态。我觉得它是“应该”让应用程序保持活动状态的 reportMyActivity/事件通道监听的组合。 来自服务器的错误是 401 Unauthenticated - Web 票证已过期。这是否意味着访问令牌? 那是正确的,当您获得令牌的原始响应时,您看到的持续时间值是多少?您应该将该值解释为令牌过期前的秒数。 【参考方案1】:

令牌过期的时间并不完全相关,重要的是 401 Unauthorized 表明令牌已过期。在该失败的请求中,应该有一个(或两个)WWW-Authenticate 标头,可用于指向获取下一个令牌的位置。您可以考虑更改负责向 UCWA 发送请求的逻辑,以反映如下内容:

    发送请求 检查响应状态代码 如果 401... 检查 WWW-Authenticate 标头并重新发出身份验证请求 存储令牌并返回步骤 #1 处理响应

这样,应用程序不需要跟踪令牌的到期时间,并且可以在遇到 401 时懒惰地检索一个新令牌。

【讨论】:

在 401 响应中,我有默认的 401 html 页面,并且没有 WWW-Authenticate 标头,但是,我遵循您描述的结构(发送请求,获取 401,重新验证,重新发送请求,处理响应)所以谢谢你的回答。

以上是关于即使定期报告我的活动,应用程序也会在 1 小时后过期的主要内容,如果未能解决你的问题,请参考以下文章

即使有一个带有特定代码的if语句用于我的输入,我的程序也会在我输入输入时停止[关闭]

即使没有分派任何操作,Redux 状态也会在加载时更改

即使在调试之后,Kivymd 应用程序也会在启动时崩溃

即使似乎授予访问权限,Google Calendar API在OAuth期间也会出现403错误

即使没有 DOM 断点,Chrome 调试器也会在某个函数处停止

即使类别是 AVAudioSessionCategoryPlayback,AVAudioPlayer 也会在屏幕锁定时停止播放