如何使AFOAuth1Client与AFIncrementalStore一起使用?

我可以使用AFOAuth1Client获取AFOAuth1Token的有效实例,并且可以将其保存到钥匙串中以进行重用。我的AFOAuth1Client单例实例能够使用 token 进行调用,但是我不确定如何将其传递给实现AFIncrementalStoreHTTPClient协议的AFRESTClient实例使用。

AFRESTClient的方法“setAuthorizationHeaderWithToken:”需要一个字符串,并且 token 中存储的所有属性似乎都不起作用。我在这里需要做什么?我会完全不正确地处理此问题吗?我的理解是,AFOAuth1Client仅应用于获取 token ,但我开始认为自己可能会偏离方向。

编辑:问题的更简洁版本:如何使AFOAuth1Client与AFIncrementalStore一起使用?

最佳答案

我本来建议修改AFRESTClient以从AFOAuth1Client继承,但是我发现了这个拉取请求,其中Matt指出AFOAuth1Client应该与您的客户端子类分开:https://github.com/AFNetworking/AFOAuth1Client/pull/6

我已经广泛使用AFNetworking,但是编写了自己的身份验证,而不是使用AFOAuth1Client。在那我覆盖了我的AFHTTPClient子类中的requestWithMethod。授权标头不是静态的,它取决于每个请求的路径和参数。

与上述Matt的指导一起,我相信您应该向Client子类添加authClient属性,然后将由该客户端计算的 token 添加到您自己的请求中-类似于AFOAuth1Client本身的方式。

我不确定,但是我会试一试。

//在您的AFRestClient子类中

@property(nonatomic, strong) AFOAuth1Client *authClient;
...

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                  path:(NSString *)path
                            parameters:(NSDictionary *)parameters
{

   NSMutableURLRequest *request = [super requestWithMethod:method path:path parameters:parameters];

   NSString *authorizationHeader = [self.authClient authorizationHeaderForMethod:method path:path parameters:parameters];
   [request setValue:authorizationHeader forHTTPHeaderField:@"Authorization"];


  return request;
}

在发出第一个请求之前,您将初始化authClient并获得[self.authClient authorizeUsingOAuthWithRequestTokenPath:...]

关于ios - 如何在AFIncrementalStore中使用AFOAuth1Client,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17603483/

10-08 21:08