您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页2017.3.7

2017.3.7

来源:二三四教育网

第一个坑,登录。

我采用了第二种方式,用户名密码的方式,这样可以自定义一个漂亮的登录界面。很快,第一个坑出现了。

当一个新用户,第一次登录时,可以获取到token,这时就生成了一份authorization,这时再次登录时,token就不再返回了。这就郁闷了。可以想象这样一个场景,当一个新用户下载登录APP,然后用了一段时间,由于某些原因暂时卸载了,后来再重新安装时,再次登录就获取不到token了。

现在通过这个CocoaPods安装的OctoKit是0.5版本,MVVMReactiveCocoa中的版本较早。对比一下两个版本登录接口的实现,早期GitHub给出的方案是,登录一次后,再次登录时先删除原来的authorization,再重新登录。感觉这个方案还是欠妥当,所以GitHub在后续版本中去掉了。不过这不就是把这个难题抛给了客户端的开发人员吗?当然也可能是我对文档不太熟悉,可能已经有了解决办法,不过为了保证产品的快速开发,暂时先采用这个方案。

不过经过测试,这个方案也暗藏了一个坑(�也可能是我文档读的不够仔细,读英文文档,真想骂娘)。调用删除接口需要带上登录信息,否则会报401错误

于是扩展了OCTClient,添加了一个新方法

-(RACSignal *)revokeAsUser:(NSString *)userName password:(NSString *)pwd objectID:(NSString *)objectID {
    if (self.user == nil) return [RACSignal error:self.class.userRequiredError];
    [self setAuthorizationHeaderWithUsername:userName password:pwd];
    NSString *path = [NSString stringWithFormat:@"authorizations/%@", objectID];
    NSMutableURLRequest *request = [self requestWithMethod:@"DELETE" path:path parameters:nil];
//    request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
    return [self enqueueRequest:request resultClass:nil];
}

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务