iOS - 在NSURLSession中刷新过期的身份验证令牌

时间:2016-01-31 01:57:17

标签: ios nsurlsession nsurlrequest

在我的应用中,我需要在HTTPHeadField中为我向服务器发出的每个NSURLRequest API调用添加我的身份验证令牌。此令牌仅在2天内有效。当它变为无效时,我将从我的服务器收到“token_invalid”错误响应,这意味着我需要向我的服务器发送API调用以刷新我的身份验证令牌。

难以解决的问题是这些NSURLRequests是同时完成的,因此当每个因令牌过期而失败时,所有这些都将尝试刷新令牌。如何设置它以便令牌刷新ONCE,完成后重新尝试所有失败的请求?

进步

到目前为止我所做的工作,但只是在某种程度上让我感到困惑。当我成功刷新auth令牌时,我会遍历所有失败的请求,并重新尝试它们。但是,在负责刷新身份验证令牌的ONE API调用中,所有这些都被重新尝试。

例如,正在进行3次API调用(朋友请求,通知和获取用户的朋友)。如果“Get Friend Requests”API调用首先失败,则它负责刷新令牌。其他两个API请求放在failedRequests数组中。成功刷新身份验证令牌后,只有“获取好友请求”API调用的成功块正在通过... 3次!

我有点理解为什么会这样做,因为我在一个NSURLRequest的{​​{1}}方法的上下文中重新尝试所有失败的API请求。当以sendTask的工作方式刷新身份验证令牌时,我是否有办法在给定的上下文中重新尝试失败的请求?

Key-Value Observing

1 个答案:

答案 0 :(得分:0)

1)我认为您应该从成功登录帐户中获取令牌。

2)所以当令牌到期时。向用户显示登录屏幕。

3)如果用户成功登录,他将获得新的访问令牌。

4)您可以将其用于下一个请求