首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AFIncrementalStore中使用AFOAuth1Client

如何在AFIncrementalStore中使用AFOAuth1Client
EN

Stack Overflow用户
提问于 2013-07-12 05:03:50
回答 2查看 561关注 0票数 1

如何让AFOAuth1Client与AFIncrementalStore协同工作?

我能够使用AFOAuth1Client获得一个有效的AFOAuth1Token实例,并能够将其保存到密钥链中以供重用。我的AFOAuth1Client的单例实例能够使用令牌进行调用,但是我不确定如何传递它以供实现AFIncrementalStoreHTTPClient协议的AFRESTClient实例使用。

AFRESTClient的方法"setAuthorizationHeaderWithToken:“需要一个字符串,而存储在令牌中的属性似乎都不起作用。我需要在这里做什么?我做的这些是完全错误的吗?我的理解是AFOAuth1Client应该只用于获取令牌,但我开始认为我可能偏离了路线。

编辑:也许是这个问题的一个更简洁的版本:如何让AFOAuth1Client与AFIncrementalStore一起工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-13 23:56:42

灵光一现之后,这是我的解决方案:

在我的AFRESTClient子类中,我覆盖了- (NSMutableRequest *)requestWithMethod:path:parameters:,如下所示:

代码语言:javascript
复制
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                      path:(NSString *)path
                                parameters:(NSDictionary *)parameters
{     
    NSMutableURLRequest *request = [[MyAFOAuth1ClientSubclass sharedClient] 
                                        requestWithMethod:method
                                                     path:path
                                               parameters:parameters];

    return request;
}

这让AFRESTClient像预期的那样使用OAuth令牌进行调用,然后我就去比赛了。如果我遇到任何意想不到的副作用,我会更新这一点,但到目前为止,它似乎相当可靠。

票数 0
EN

Stack Overflow用户

发布于 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子类中

代码语言:javascript
复制
@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:...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17603483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档