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使用心得的更多相关文章

  1. 【原】使用Bmob作为iOS后台开发心得——云端代码添加其他User的Relation关系

    本文转载请注明出处 —— polobymulberry-博客园 问题描述 我在User表中增加了两个列,分别为“我关注的人”(Relation关系)和“我的粉丝”(Relation关系)当我关注某个人 ...

  2. 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)

    本文转载请注明出处 —— polobymulberry-博客园 简介 Bmob中的数据关联分为Pointer和Relation两种(数据关联在我开发app过程中使用还是很频繁的,也算个难点.虽然之前没 ...

  3. ios 内存管理 心得

    - alloc, copy, retain会把引用计数+1 - release会把引用计数-1 - 局部变量如果初始化时不是autorelease的,要及时调用release释放,并且赋值为nil否则 ...

  4. 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得

    iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...

  5. 【整理】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得

    [整理]Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得 iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具 ...

  6. IOS开发经验分享

    一些IOS开发的心得: 1) [Multiple Threads] IOS多线程注意, 所有的UI操作都必须在主线程上: Any code that will update the UI should ...

  7. iOS 开发者计划申请 2014 年最新心得[转]

    iOS 开发者计划申请 2014 年最新心得 http://myfairland.net/ios-developer-program/

  8. ios中关于delegate(委托)的使用心得

    ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...

  9. iOS学习心得——UITableViewCell的复用

    UITableView是在iOS开发中最常用的控件之一.我的第一篇学习心得献给它了         UITableView是由一行一行的UITableViewCell构成的.         首先想这 ...

随机推荐

  1. php网址显示excel表格内容

    /** * excel表格内容在网页中显示 * * 首先需要下载PHPExcel 工具包 * 网址: http://phpexcel.codeplex.com/releases/view/119187 ...

  2. PHP 流程管理

    添加新流程页面: <div> 请选择流程节点:<br /><br /> <?php session_start(); include("../DBD ...

  3. shell判断条件整理

    1.字符串判断 str1 = str2 当两个字符串串有相同内容.长度时为真 str1 != str2 当字符串str1和str2不等时为真 -n str1 当字符串的长度大于0时为真(串非空) -z ...

  4. 【转】ASP.NET MVC学习笔记-Controller的ActionResult

    1. 返回ViewResult public ActionResult Index()   {       ViewData["Message"] = "Welcome ...

  5. CSS3按钮效果

    来自codepen,http://codepen.io/PalashSharma20/pen/YWBAgN 知识点:屏幕居中.transform.transition.transition-delay ...

  6. 关于学习angularJS 的一些心得

    从一开始接触到 angularJS 的时候,一头雾水啊. 下面根据学习资料,主要来 阐述一点,关于angularJS学习中需要注意的点 1.angularJS 是可以做到MVC 模式 2.angula ...

  7. Ruby常用比较操作符

    操作符 含义 == 测试值是否相等 ==== 用来比较case语句的目标和每个when从句的项 <=>  通用比较操作符. 根据接受者小于, 等于, 大于其参数, 返回-1, 0. 1 & ...

  8. $_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]

    1.$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 2.$_SERVER["PHP_SELF"] 说明:当前正在执行脚本的文件名 3. ...

  9. 【荐】MongoDB基本命令大全

    DB Shell数据操作 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. #数据库 操作 1.Help查看命令提示 > h ...

  10. js/javascript代码注释规范与示例

    文件注释 文件注释位于文件的最前面,应包括文件的以下信息:概要说明及版本(必须)项目地址(开源组件必须)版权声明(必须)开源协议(开源组件必须)版本号(必须)修改时间(必须),以ISO格式表示(可使用 ...