HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何使用AFOAuth2Manager自动刷新过期的令牌?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为使用OAuth2保护的服务器编写一个小型iOS客户端.

我想知道是否可以使用AFOAuth2Manager [here]自动刷新过期的令牌.

这个想法是当服务器响应401时刷新客户端的逻辑,或者当刷新@L_944_3@返回401时引发错误应该是很常见的,所以可能它被集成到某些库中.

解决方法

我创建了一个AFOAuth2Manager的子类

在这个子类中,我覆盖这个@L_944_3@:

- (AFhttprequestOperation *)httprequestOperationWithrequest:(NSURLrequest *)request
                                                    success:(void (^)(AFhttprequestOperation *operation,id responSEObject))success
                                                    failure:(void (^)(AFhttprequestOperation *operation,NSError *error))failure {
    return [self httprequestOperationWithrequest:request
                                         success:success
                                         failure:failure
                           checkIfTokenIsExpired:YES];
}

使用附加参数调用自定义@L_944_3@:checkIfTokenIsExpired.这是为了避免无限循环所必需的.

这种@L_944_3@的实现是向前推进的:如果我们不需要检查令牌只是调用超级类.

if (!checkIfTokenIsExpired) {
        return [super httprequestOperationWithrequest:request
                                              success:success
                                              failure:failure];
    }

否则我们使用自定义故障块执行请求

else {
        return [super httprequestOperationWithrequest:request
                                              success:success
                                              failure: ^(AFhttprequestOperation *operation,NSError *error) {
            if (operation.response.statusCode == ERROR_CODE_UNAUTHORIZED) { //1
                [self reauthorizeWithsuccess: ^{ //2
                    NSURLrequest *req = [self.requestserializer requestByAddingHeadersTorequest:request]; //3
                    AFhttprequestOperation *moperation = [self httprequestOperationWithrequest:req //4
                                                                                       success:success
                                                                                       failure:failure
                                                                         checkIfTokenIsExpired:NO];

                    [self.operationQueue addoperation:moperation]; //5
                }                    failure: ^(NSError *error) {
                    failure(nil,error);
                }];
            }
            else {
                failure(operation,error); //6
            }
        }];
    }

> // 1:检查http状态码,如果401尝试自动重新授权.> // 2:reauthorize是一个私有的@L_944_3@,它使用AFOAuthManager刷新令牌.> // 3:在这种情况下,我们被重新授权成功,我们想重新提交上一个请求的副本.@L_944_3@requestByAddingHeadersTorequest:只复制前一个请求中的所有头域.> // 4:创建上一个请求的副本,但是这次最后一个参数是false,因为我们不想再次检查! successBlock和failureBlock与以前的请求相同.> // 5:将操作添加到队列中.> // 6:如果重新授权@L_944_3@失败,只需调用故障块.

大佬总结

以上是大佬教程为你收集整理的ios – 如何使用AFOAuth2Manager自动刷新过期的令牌?全部内容,希望文章能够帮你解决ios – 如何使用AFOAuth2Manager自动刷新过期的令牌?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。