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.ini 中文注释
这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为 ; ´php.ini´.PHP 将在这些地方依次查找该文件:当前工作目录:环境变量PHPRC ; 指明的路径:编译时指定的 ...
- 静态关键字static(2)
static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static ...
- Kakfa重连测试
在Kafak已启动的情况下: 发送端首次连接大概耗时400毫秒.后续消息发送都在1毫秒以下. 接收端首次连接大概耗时400-7000毫秒.后续消息接收都在1毫秒以下.(具体时间与topic中存留的消息 ...
- grafana日志分析界面及导出的json文件
日志分析面板导出的json文件,效果图如下: 下载地址:http://files.cnblogs.com/files/xiaoming279/%E9%9D%A2%E6%9D%BF.zip 主机面板 主 ...
- [Unity] 3D数学基础 - 2D旋转矩阵
2D矩阵的旋转: NewX = X * Cos(α) - Y * Sin(α) NewY = X * Sin(α) + Y * Cos(α) 一般在三角函数中使用的是弧度,我们可以通过下面的公式将角度 ...
- Android联系人数据库
转载自http://www.2cto.com/kf/201406/309356.html 通信录是一个3层的数据存储模型,这三个数据模型就是ContactsContact.Data,ContactsC ...
- FindWindowEx用法
函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow): 参数 ...
- 反射的一些用法(WP8.1下)
我初步的理解:反射就是动态调用(dll)类. 比如某个dll有一个类,通过反射就可以知道它里面属性.方法,就可以实现调用. 确实,dll可以直接引用,但是如果遇到这种情况: 添加.删除功能同属一个Dl ...
- eclipse导入重复的项目、eclipse设置默认注释
- poj 1695
用动态规划,dp[a][b][c]表示从位置最大的车在a(注意不是第一辆车),第二的车在b,第三的车在c开始最少需要的时间. 方程:dp[a][b][c]=max{dp[a+1][b][c], ...