我们的 API 返回一个用户身份验证代码,该代码具有会话到期(30 分钟不活动)。因此,如果我们使用身份验证令牌进行 api 调用,它会将会话更新到调用时间后的 30 分钟。
在 30 分钟不活动后,api 返回一个错误,指出令牌已过期。此时我们应该请求一个新的身份验证令牌。
但是,这样做的明显方法(向用户显示登录屏幕并让他们再次登录)将意味着在应用程序的某些功能中间切断用户。
例如,我们有各种带有选项和输入的视图控制器,它们在流程结束时聚合并提交一个完整的 API 调用。如果在用户填写这些输入和视图时服务器上的会话到期,那么在进行 API 调用时他们将被注销,并且他们将失去在这些视图中的进度。
有两种可能的解决方法:
我们自己在应用程序中设置了计时器,以确保用户在应用程序不活动 30 分钟后退出。这意味着它们不会在一组输入期间被注销,但这会带来以下问题:即使我们正在运行自己的计时器,服务器 API 仍可能过期。因此这是行不通的。
我们每 10 秒左右轮询一次服务器,询问 API auth 令牌是否仍然有效。这会消耗电池、数据和各种东西,而且不是做这样的事情的合理方式。
有没有人有任何想法?
谢谢汤姆