如何让AFOAuth1Client与AFIncrementalStore协同工作?
我能够使用AFOAuth1Client获得一个有效的AFOAuth1Token实例,并能够将其保存到密钥链中以供重用。我的AFOAuth1Client的单例实例能够使用令牌进行调用,但是我不确定如何传递它以供实现AFIncrementalStoreHTTPClient协议的AFRESTClient实例使用。
AFRESTClient的方法"setAuthorizationHeaderWithToken:“需要一个字符串,而存储在令牌中的属性似乎都不起作用。我需要在这里做什么?我做的这些是完全错误的吗?我的理解是AFOAuth1Client应该只用于获取令牌,但我开始认为我可能偏离了路线。
编辑:也许是这个问题的一个更简洁的版本:如何让AFOAuth1Client与AFIncrementalStore一起工作?
发布于 2013-07-13 23:56:42
灵光一现之后,这是我的解决方案:
在我的AFRESTClient子类中,我覆盖了- (NSMutableRequest *)requestWithMethod:path:parameters:,如下所示:
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
path:(NSString *)path
parameters:(NSDictionary *)parameters
{
NSMutableURLRequest *request = [[MyAFOAuth1ClientSubclass sharedClient]
requestWithMethod:method
path:path
parameters:parameters];
return request;
}这让AFRESTClient像预期的那样使用OAuth令牌进行调用,然后我就去比赛了。如果我遇到任何意想不到的副作用,我会更新这一点,但到目前为止,它似乎相当可靠。
发布于 2013-07-12 07:32:28
我本打算建议修改AFRESTClient以继承自AFOAuth1Client,但是我发现了这个pull请求,其中Matt声明AFOAuth1Client应该与您的客户端子类分离:https://github.com/AFNetworking/AFOAuth1Client/pull/6
我广泛地使用了AFNetworking,但没有使用AFOAuth1Client,而是编写了自己的身份验证。因为我在我的AFHTTPClient子类中覆盖了requestWithMethod。authorization头部不是静态的,它取决于每个请求的路径和参数。
结合Matt上面的指导,我认为您应该将authClient属性添加到Client子类中,然后将该客户端计算的令牌添加到您自己的请求中-类似于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:...
https://stackoverflow.com/questions/17603483
复制相似问题