gpt4 book ai didi

ios - 如何使用 RestKit 自动处理 token 刷新

转载 作者:可可西里 更新时间:2023-11-01 04:43:59 25 4
gpt4 key购买 nike

我有一个项目,您可以想象它就像 Facebook 应用程序,但由于我是 RestKit 初学者,所以我很难掌握如何使用 RestKit 组织它和处理 token 。

这是我到目前为止得到的:

  • 核心数据 NSManagedObject 类,我为每个类添加了一个名为 REST 的类别,该类别具有提供 RKObjectMapping 和 RKRouteSet 的功能
  • 自定义 RKObjectManager 子类,处理设置 header 、MIME 类型、设置授权 header 和核心数据存储
  • RKObjectRequestOperation 子类

如果您有组织建议,但我的主要问题是如何在收到 401 HTTP 状态代码并使用新 token 再次触发失败请求后实现自动 token 刷新?

我首先覆盖了我的 RKObjectRequestOperation 子类中的方法:

- (void)setCompletionBlockWithSuccess:(void ( ^ ) ( RKObjectRequestOperation *operation , RKMappingResult *mappingResult ))成功
失败:(void ( ^ ) ( RKObjectRequestOperation *operation , NSError *error ))failure

所以现在我可以拦截 401 响应,但现在我必须再次调用以刷新 token ,然后使用新 token 将失败的操作重新加入队列,请告知如何执行此操作。

最佳答案

如果您使用对象管理器,我通常不会使用自定义 RKObjectRequestOperation。我会在对象管理器级别处理它。

在对象管理器中,您可以覆盖每个主要的请求方法(它们随成功和失败 block 一起提供)。您可以实现这些方法来调用 super,但用新版本替换成功和失败 block ,在调用提供的版本之前添加一些逻辑。

现在,附加逻辑将是检查响应状态。如果它显示需要刷新 token ,则可以对其进行操作,然后对象管理器可以使用第一个请求中提供的参数触发新的加载。

此外,您不应该重新排队操作,除非文档说明它受支持,因为某些操作在第二次执行时将无法正常工作...

关于ios - 如何使用 RestKit 自动处理 token 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com