iOS开发项目篇—16OAuth授权简介

iOS开发项目篇—16OAuth授权简介

一、资源的授权

在互联网行业,公司要能长期存活下来,用户量很重要,比如腾讯、新浪,它们的用户量是非常巨大的

要想长期留住用户,用户资源(数据)的管理也很重要,如果你经常在不经过用户同意的情况下,把用户的一些资源共享出去,那肯定是留不住用户的,甚至会遭到法律的制裁

但是,有时候确实要把某些用户资源共享出去,比如第三方想访问用户的QQ数据、第三方想访问用户的新浪微博数据

要想把用户资源共享出去,就必须取得用户的同意,那么这里就有个资源授权的问题

资源授权的方式有很多种,关键是要安全,常用的有OAuth授权

二、OAuth简介

OAuth是一种协议,OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准

任何服务提供商只要想把自己的用户资源共享出去,都可以实现自身的OAuth认证服务。比如腾讯可以实现自己的OAuth认证服务,把用户的QQ数据共享出去

同时,任何第三方都可以使用OAuth认证服务

第三方若想访问用户资源,就必须遵守服务提供商实现的OAuth协议

总结一下,OAuth可以用来控制用户资源的访问权限。比如我们想访问用户的新浪微博数据,就必须通过新浪实现的OAuth认证

三、OAuth产生的背景

1.问题:假如你正在使用美图秀秀处理你的相片,处理完后觉得自己好美哦,决定把图片分享到自己的新浪微博,有什么解决方案?

解决方案:

第1种方案

(1) 步骤 :你先使用美图秀秀将处理完的图片保存到硬盘上;然后再登录你的微博账号,把事先保存在硬盘上的图片上传到微博,然后发一条微博分享出去

(2)评价 :这种方式很安全,但处理比较繁琐,效率低下

第2种方案

(1)步骤 :你将自己的新浪微博账号直接提供给美图秀秀,美图秀秀再利用你的新浪微博账号自动发一条微博,将处理完的图片分享出去

(2)评价 :这种方式效率是提高了,但是安全性大大降低了,美图秀秀可以使用你的新浪微博账号去查看你的所有隐私甚至篡改你的资料

2.提问:有没有安全又高效的方案呢?在不让美图秀秀知道自己的微博账号密码的前提下,自动帮我发送一条微博,将图片分享出去

思考:

(1)首先,要想美图秀秀自动发微博,肯定要调用新浪微博的API接口,所以新浪要开放自己的API;

(2)其次,如果新浪把API开放了,美图秀秀可以调用了,但是也不可能让它随意访问每个用户的资源,需要用户批准、用户授权,而且授权的过程中不能让美图秀秀知道微博的账号密码

解决步骤:

(1) 新浪开放自己的API

(2)用户对资源进行授权(最后,美图秀秀应该在不知道用户的微博账号密码的前提下,自动发送微博进行分享图片)

3.提问:上面提到需要用户对资源进行授权,那有没有安全的授权方式呢?

答:很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生

  OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准

四、OAuth的优点

OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准

OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的

五、授权的步骤

第三方想访问服务提供商的用户资源时,需要先进行OAuth授权

授权步骤总结就3点:

(1)获取未授权的Request Token(显示登录界面)

(2)获取用户授权的Request Token(登录)

(3)用授权的Request Token换取Access Token

(得到这个Access Token就相当于得到了一个“令牌”,通过此“令牌”请求,就可以去拥有资源的网站抓取任意有权限可以被抓取的资源)

说明:

OAuth的授权步骤1-获取未授权的Request Token

打开服务提供商提供的账号密码输入页面(比如新浪微博提供的)

OAuth的授权步骤2-获取用户授权的Request Token

如果用户是第一次登录第三方,会跳到一个授权页面。

点击“授权”后,会返回一个授权过后的Request Token

如果用户不是第一次登录第三方,就不会出现这个授权页面,会直接返回之前授权过的Request Token

新浪开发者证明

要想使用新浪提供的OAuth授权服务,还必须申请为新浪微博开发者,创建自己的应用,获取AppKey和AppSecret

AppKey和AppSecret在授权过程中作为请求参数使用

创建移动应用的地址:

http://open.weibo.com/apps/new?sort=mobile

创建完应用后,就可以在自己的应用界面查询到AppKey和AppSecret

iOS开发项目篇—16OAuth授权简介,布布扣,bubuko.com

时间: 2024-10-25 09:03:51

iOS开发项目篇—16OAuth授权简介的相关文章

iOS开发项目篇—17OAuth授权过程

iOS开发项目篇—17OAuth授权过程 一.网页演示 1.打开开放平台的地址 2.创建应用 3.填写个人开发者信息 4.创建新的应用 5.查看微博提供的api接口 6.在这里使用的是OAuth2 7.接口的完整说明 说明:提供的URL就是登陆界面 8.创建后的应用信息 9.不能直接访问提供的URL,还需要传入必要的参数 传入必要的参数: client_id true string 申请应用时分配的AppKey // 得知道给哪个应用授权 redirect_uri true string 授权回

iOS开发项目篇—25字典转模型第三方框架、运行时机制简介

iOS开发项目篇—25字典转模型第三方框架.运行时机制简介 一.使用第三方框架完成字典转模型 1.获取框架 在www.code4app.com网站中,搜索字典转模型 可以点击下载代码进行下载,也可以带github上去下载. 管理框架的好处:点击刷新按钮会刷新所有的项目. 2.使用 1.导入第三方框架 2.使用示例 错误提示: 在刷新的时候直接使用一行代码即可: 1 /**加载最新微博数据*/ 2 -(void)loadNewStatus 3 { 4 //1.获得请求管理者 5 AFHTTPReq

iOS开发项目篇—18截取授权成功的请求标记

iOS开发项目篇—18截取授权成功的请求标记 一.步骤和说明 新建一个授权分组,创建一个自定义的授权控制器. 把window的根控制器设置为授权控制器,以测试. 自定义控制器代码: 1 // 2 // YYOAuthViewController.m 3 // 4 5 #import "YYOAuthViewController.h" 6 7 @interface YYOAuthViewController () 8 9 @end 10 11 @implementation YYOAut

iOS开发项目篇—19获取授权过的访问标记

iOS开发项目篇—19获取授权过的访问标记 一.简单说明 1.获取授权 2.简单说明 说明: (1)只能使用post请求 (2)post请求的参数有5个,且五个参数都是必须的. (3)新浪会返回一个JSON,转成OC对象为字典,可以通过Key取出ACCESS_TOKEN. 二.实现 1.导入第三方框架 2.使用字典封装请求参数,五个参数都是必须的,就算少一个都是非法请求. 封装代码 1 //2.封装请求参数 2 /* 3 url:https://api.weibo.com/oauth2/acce

iOS开发项目篇—20存储账号信息

iOS开发项目篇—20存储账号信息 一.简单说明 1.不论请求是否成功,都在发送Post请求后,隐藏遮罩. 2.在授权成功后,切换根控制器. (1)说明 切换到控制器有几种情况,要么是切换到新特性,要么是切换到“首页”. 没有必要每次进入程序都需要登录,且每次返回的数据都是一样的,所以只需要把拿到的信息保存到沙盒里就可以了. 判断上次有没有登录成功(把拿到的access_token保存到沙盒中,如果沙盒中有access_token,说明上次登录成功),如果上次登陆成功,那么就判断是否要进入新特性

iOS开发项目篇—36封装微博业务

iOS开发项目篇—36封装微博业务 一.简单说明 1.请求参数面向模型 2.请求结果面向模型 3.对控制器来说应该屏蔽业务细节.不让控制器关心(知道)业务细节,它只需要知道自己在做某个业务 @通过一个专门的业务处理类:处理微博业务细节 说明: 业务:加载新的微博首页数据 实现:给新浪服务器发送一个GET请求 业务:加载更多的首页微博数据 实现1:给新浪服务器发送一个GET请求 实现2:去沙盒中加载以前离线缓存的微博数据  二.实现 1.新建一个微博业务处理类,继承自NSObject 微博业务处理

iOS开发项目篇—34获取用户信息

iOS开发项目篇—34获取用户信息 一.简单说明 需求:获取当前用户的昵称 ,需要获取当前登录用户的个人信息. 查看接口 要求传递的参数 这里要获取的时用户的昵称(所以使用用户id作为参数传入) 二.实现代码 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 //设置导航栏内容 6 [self setupNavBar]; 7 8 //集成刷新控件 9 [self setupRefresh]; 10 11 //设置用户的昵称为标题 12 [s

iOS开发项目篇—21抽取工具类

iOS开发项目篇—21抽取工具类 一.抽取宏 把和应用相关的信息抽取出来 App Key:1972915028 App Secret:b255603c4dfd82b4785bf9a808ce2662 回调地址:http://www.cnblogs.com/wendingding/ (1)appkey和回调页面在很多地方都要用到 (2)如果是不同应用的话,只需要把这几个参数换掉就可以了.把它们抽取成一个宏,写到pch文件中. 项目的PCH文件 1 #import <Availability.h>

iOS开发项目篇—39获取用户未读的微博信息(信息提醒)

iOS开发项目篇—39获取用户未读的微博信息(信息提醒) 一.简单说明 1.实现效果       2.实现 (1)新建一个类,封装请求 查看新浪官方要求的请求参数 该类中的代码设计 YYUnreadCountParam.h文件 1 // YYUnreadCountParam.h 2 //封装请求参数的类 3 4 #import "YYBaseParam.h" 5 6 @interface YYUnreadCountParam : YYBaseParam 7 /**uid true in