在我的应用中,我需要在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
答案 0 :(得分:0)
1)我认为您应该从成功登录帐户中获取令牌。
2)所以当令牌到期时。向用户显示登录屏幕。
3)如果用户成功登录,他将获得新的访问令牌。
4)您可以将其用于下一个请求