我正在学习从移动应用程序制作API请求。
我正在使用的API,在发出登录请求时返回access_token,expires_in和refresh_token。
我试图了解访问令牌想法背后的整个逻辑,一直在互联网上寻找,找不到一个好的例子也不是一个好的解释。
据我所知,
制作API请求的最佳方法是:
1)将expires_in存储在设备内部2)在每个请求中首先检查令牌是否过期3)如果是,则使用刷新令牌请求新的4)否则发出请求
这是正确的吗?
你的流程基本上是正确的。 如果是JWT令牌,则可以对其进行解码。在里面你可以找到一些属性,检查here。 您可以做的是使用令牌的iat属性,其中包含令牌发出的时间(您不能依赖于从WS收到的日期)将到期时间添加到该日期,这将是到期日期。 如果您使用Alamofire非常简单,有两种协议:
iat
RequestAdapter
RequestRetrier
通过使用两者的组合,您可以轻松刷新令牌,在请求适配器中,如果令牌过期,您可以抛出错误,在更复杂的情况下,您可以拦截此特定错误并发出刷新令牌请求。 它解释了here。