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构成的. 首先想这 ...
随机推荐
- Android系统学习小记
序言 Android 应用的启动到一个页面显示出来,这个过程涉及到点击事件的处理,以及如何启动一个Activity,启动一个Activity之后,如何将Activity中我们的设置的ContentVi ...
- SQL Server 2012复制教程以及复制的几种模式
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
- BootStrap 杂记
1:Bootstrap中的弹出窗口组件Modal 2:让div或者文字居中 在标签的class里加上 text-center .
- php 去掉字符串的最后一个字符
原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下: $str = "1,2,3,4,5,6,"; $news ...
- Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
一.gets() 函数详解 gets()函数用来从 标准输入设备(键盘)读取字符串直到 回车结束,但回车符('\n')不属于这个字符串. 调用格式为: gets(str); 其中str为字符串变量(字 ...
- [BZOJ3262]陌上花开
[BZOJ3262]陌上花开 试题描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一 ...
- Eclipse安装Freemarker插件
方法一:手动安装 手动安装没有成功 步骤: 1. 下载freemarker-ide : http://sourceforge.net/projects/freemarker-ide/files/ 2. ...
- C#高级编程笔记 Day 7, 2016年9月 19日 (泛型)
1.协变和抗变 泛型接口的协变 如果泛型类型用 out 关键字标注,泛型接口就是协变的.这也意味着返回类型只能是 T. 接口IIndex 与类型T 是协变的,并从一个制度索引器中返回这个类型. pu ...
- java连接oracle范例
需要引用:ojdbc6.jar import java.sql.*; public class Main { static Connection conn; static Statement stat ...
- 解决Can't connect to MySQL server on 'localhost' (10048)
解决Can't connect to MySQL server on 'localhost' (10048) 您使用的是Windows操作系统,此错误与一个注册表键值TcpTimedWaitDelay ...