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。

下面是我使用的大致步骤(仅供参考):

  1. NSURL *baseURL = [NSURL URLWithString:@"http://xxx.xxx.x.x:xxxx"];
  2. AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];
  3.  
  4. [manager POST:@"/OAuth/token"
  5. parameters:@{@"client_id":@"xxx",
  6. @"client_secret":@"xxx",
  7. @"grant_type":@"xxx",
  8. }
  9. success:^(AFHTTPRequestOperation *operation, id responseObject) {
  10. NSLog(@"\n=============accessToken=================\n\n%@\n\n",responseObject);
  11.  
  12. //! 存储credential,内含access_token
  13. AFOAuthCredential *credential = [[AFOAuthCredential alloc]initWithOAuthToken:[responseObject objectForKey:@"access_token"]
  14. tokenType:[responseObject objectForKey:@"token_type"]];
  15. [credential setExpiration:[responseObject objectForKey:@"expires_in"]];
  16.  
  17. //! 记录token过期时间,这里的token有效时间为1800s
  18. _tokenInvalidateTime = [NSDate dateWithTimeIntervalSinceNow:];
  19.  
  20. //! 设置需要在Headers中加入的参数Authorization,_opManager为另一个AFHTTPRequestOperationManager,因为我这个例子里,二者使用的baseURL不同
  21. _opManager.requestSerializer = [AFHTTPRequestSerializer serializer];
  22. [_opManager.requestSerializer setAuthorizationHeaderFieldWithCredential:credential];
  23. //! 我这里并没有用作者提供的方法,将credential写入文件,
  24. //! 因为我是直接将Authorization的设置放在了这里完成
  25. //! 如果,我没有用到这_opManager
  26. //! 这里我就应该用[AFOAuthCredential storeCredential:credential withIdentifier:serviceProviderIdentifier];
  27. //! 这个方法将credential写入文件,
  28. //! 之后用AFOAuthCredential *credential =
  29.    //![AFOAuthCredential retrieveCredentialWithIdentifier:serviceProviderIdentifier];
  30. //! 方法在其他地方重新获取这个credential。credential里就还有token等信息
  31. }
  32. failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  33. NSLog(@"\nAccessToken获取失败: %@", error);
  34. }];

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.ini 中文注释

    这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为 ; ´php.ini´.PHP 将在这些地方依次查找该文件:当前工作目录:环境变量PHPRC ; 指明的路径:编译时指定的 ...

  2. 静态关键字static(2)

    static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static ...

  3. Kakfa重连测试

    在Kafak已启动的情况下: 发送端首次连接大概耗时400毫秒.后续消息发送都在1毫秒以下. 接收端首次连接大概耗时400-7000毫秒.后续消息接收都在1毫秒以下.(具体时间与topic中存留的消息 ...

  4. grafana日志分析界面及导出的json文件

    日志分析面板导出的json文件,效果图如下: 下载地址:http://files.cnblogs.com/files/xiaoming279/%E9%9D%A2%E6%9D%BF.zip 主机面板 主 ...

  5. [Unity] 3D数学基础 - 2D旋转矩阵

    2D矩阵的旋转: NewX = X * Cos(α) - Y * Sin(α) NewY = X * Sin(α) + Y * Cos(α) 一般在三角函数中使用的是弧度,我们可以通过下面的公式将角度 ...

  6. Android联系人数据库

    转载自http://www.2cto.com/kf/201406/309356.html 通信录是一个3层的数据存储模型,这三个数据模型就是ContactsContact.Data,ContactsC ...

  7. FindWindowEx用法

    函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow): 参数 ...

  8. 反射的一些用法(WP8.1下)

    我初步的理解:反射就是动态调用(dll)类. 比如某个dll有一个类,通过反射就可以知道它里面属性.方法,就可以实现调用. 确实,dll可以直接引用,但是如果遇到这种情况: 添加.删除功能同属一个Dl ...

  9. eclipse导入重复的项目、eclipse设置默认注释

  10. poj 1695

    用动态规划,dp[a][b][c]表示从位置最大的车在a(注意不是第一辆车),第二的车在b,第三的车在c开始最少需要的时间. 方程:dp[a][b][c]=max{dp[a+1][b][c],     ...