iOS AFOAuth2Manager使用心得
github地址: https://github.com/AFNetworking/AFOAuth2Manager
这个库,不多说,实现OAuth 2.0授权访问。
确实可以减轻很大的负担,而且使用很容易。
完成 OAuth 2.0授权认证 大概就这几步:
1.按照后台给的参数,向服务器请求token等数据。
2.存储返回的数据,并记录token过期的时间,用于后续步骤判定token是否过期。(如果是拿到便开始使用,可以省略存储这一步)
3.按照后台给的格式,将token写入Request的Header里的Authorization。
4.每次请求数据时,都用这个已经在header写入了token的Request。
5.后续使用中,随时判定token有效期。若token过期时,马上获取新的token,再写入Authorization。
下面是我使用的大致步骤(仅供参考):
NSURL *baseURL = [NSURL URLWithString:@"http://xxx.xxx.x.x:xxxx"];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; [manager POST:@"/OAuth/token"
parameters:@{@"client_id":@"xxx",
@"client_secret":@"xxx",
@"grant_type":@"xxx",
}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"\n=============accessToken=================\n\n%@\n\n",responseObject); //! 存储credential,内含access_token
AFOAuthCredential *credential = [[AFOAuthCredential alloc]initWithOAuthToken:[responseObject objectForKey:@"access_token"]
tokenType:[responseObject objectForKey:@"token_type"]];
[credential setExpiration:[responseObject objectForKey:@"expires_in"]]; //! 记录token过期时间,这里的token有效时间为1800s
_tokenInvalidateTime = [NSDate dateWithTimeIntervalSinceNow:]; //! 设置需要在Headers中加入的参数Authorization,_opManager为另一个AFHTTPRequestOperationManager,因为我这个例子里,二者使用的baseURL不同
_opManager.requestSerializer = [AFHTTPRequestSerializer serializer];
[_opManager.requestSerializer setAuthorizationHeaderFieldWithCredential:credential];
//! 我这里并没有用作者提供的方法,将credential写入文件,
//! 因为我是直接将Authorization的设置放在了这里完成
//! 如果,我没有用到这_opManager
//! 这里我就应该用[AFOAuthCredential storeCredential:credential withIdentifier:serviceProviderIdentifier];
//! 这个方法将credential写入文件,
//! 之后用AFOAuthCredential *credential =
//![AFOAuthCredential retrieveCredentialWithIdentifier:serviceProviderIdentifier];
//! 方法在其他地方重新获取这个credential。credential里就还有token等信息
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"\nAccessToken获取失败: %@", error);
}];
iOS AFOAuth2Manager使用心得的更多相关文章
- 【原】使用Bmob作为iOS后台开发心得——云端代码添加其他User的Relation关系
本文转载请注明出处 —— polobymulberry-博客园 问题描述 我在User表中增加了两个列,分别为“我关注的人”(Relation关系)和“我的粉丝”(Relation关系)当我关注某个人 ...
- 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
本文转载请注明出处 —— polobymulberry-博客园 简介 Bmob中的数据关联分为Pointer和Relation两种(数据关联在我开发app过程中使用还是很频繁的,也算个难点.虽然之前没 ...
- ios 内存管理 心得
- alloc, copy, retain会把引用计数+1 - release会把引用计数-1 - 局部变量如果初始化时不是autorelease的,要及时调用release释放,并且赋值为nil否则 ...
- 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...
- 【整理】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
[整理]Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得 iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具 ...
- IOS开发经验分享
一些IOS开发的心得: 1) [Multiple Threads] IOS多线程注意, 所有的UI操作都必须在主线程上: Any code that will update the UI should ...
- iOS 开发者计划申请 2014 年最新心得[转]
iOS 开发者计划申请 2014 年最新心得 http://myfairland.net/ios-developer-program/
- ios中关于delegate(委托)的使用心得
ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...
- iOS学习心得——UITableViewCell的复用
UITableView是在iOS开发中最常用的控件之一.我的第一篇学习心得献给它了 UITableView是由一行一行的UITableViewCell构成的. 首先想这 ...
随机推荐
- php网址显示excel表格内容
/** * excel表格内容在网页中显示 * * 首先需要下载PHPExcel 工具包 * 网址: http://phpexcel.codeplex.com/releases/view/119187 ...
- PHP 流程管理
添加新流程页面: <div> 请选择流程节点:<br /><br /> <?php session_start(); include("../DBD ...
- shell判断条件整理
1.字符串判断 str1 = str2 当两个字符串串有相同内容.长度时为真 str1 != str2 当字符串str1和str2不等时为真 -n str1 当字符串的长度大于0时为真(串非空) -z ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
- CSS3按钮效果
来自codepen,http://codepen.io/PalashSharma20/pen/YWBAgN 知识点:屏幕居中.transform.transition.transition-delay ...
- 关于学习angularJS 的一些心得
从一开始接触到 angularJS 的时候,一头雾水啊. 下面根据学习资料,主要来 阐述一点,关于angularJS学习中需要注意的点 1.angularJS 是可以做到MVC 模式 2.angula ...
- Ruby常用比较操作符
操作符 含义 == 测试值是否相等 ==== 用来比较case语句的目标和每个when从句的项 <=> 通用比较操作符. 根据接受者小于, 等于, 大于其参数, 返回-1, 0. 1 & ...
- $_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]
1.$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 2.$_SERVER["PHP_SELF"] 说明:当前正在执行脚本的文件名 3. ...
- 【荐】MongoDB基本命令大全
DB Shell数据操作 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. #数据库 操作 1.Help查看命令提示 > h ...
- js/javascript代码注释规范与示例
文件注释 文件注释位于文件的最前面,应包括文件的以下信息:概要说明及版本(必须)项目地址(开源组件必须)版权声明(必须)开源协议(开源组件必须)版本号(必须)修改时间(必须),以ISO格式表示(可使用 ...