访问令牌到期后处理API调用

时间:2017-11-05 11:02:34

标签: ios iphone swift api token

我正在开发一个应用程序,我们将介绍token expiry。该令牌将在12.00 am每晚过期。关于我们如何在应用程序中处理令牌到期,我几乎没有问题。

What I have done:-
  

每当应用程序启动时,我都会在NSUserDefaults中查找令牌   并检查它是否仍然有效。如果它无效,那么我打电话   令牌刷新API并存储新令牌。之后,每个API调用   使用新令牌调用。

Question in my mind:-
  

一位用户正在11.59使用该应用,他在应用的主页上,   现在它的12.01和用户进入应用程序的第二页,我在哪里   调用3个不同的API请求。第一个API请求给了我   状态代码为401,因此我调用了令牌刷新API。在其他2之间   请求也可能被调用,他们也调用了刷新令牌   API。

     

如果我得到401,我怎样才能确定,在我没有令牌刷新之前,所有API调用都会失效?

1 个答案:

答案 0 :(得分:0)

不完全确定为什么你会很难获得令牌到期,通常令牌在滑动比例(比如24小时后)之后到期而不是硬停止。

在任何情况下,最简单的方法是使用一个辅助函数来获取它从NSUserDefaults读取的令牌,在app start和每个API调用之前调用它。第一次调用验证令牌还存储到期时间,以便下次调用此函数时,您知道令牌是否应该已过期而不调用服务器再次验证。它比向服务器发出大量失败的请求要好得多,因为你知道它们会失败。 这样,您就可以在服务器上清理日志,并且可以查看不应该存在的错误。

第二部分变得不那么需要虽然很好(如果服务器上的令牌由于其他原因而不是你的上午12:00到期,或由于时差,其他错误等),也可以用你的GetToken处理方法,如果你正在刷新令牌存储的过程中有一个标识来识别这样,那么调用函数会等待或重试。