1.什么是OAuth授权
简单的说就是网页授权, 允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源
2.OAuth授权的步骤
以新浪开发平台的API为例:
* 获取请求的权限
* 进入新浪开放平台
* 登录新浪微博帐号
* 我们作为第三方客户端, 想要拿到接口权限, 必须申请
* 新浪开放平台-微连接- 移动应用-创建应用之后, 可以获取第三方应用的标识 key, Screct
* 在高级信息里面, OAuth2.0的授权设置, 填写授权回调页 ( 当用户授权你的应用后, 开放平台会回调你填写的这个地址www.baidu.com, 如果绑定了域名, 那么回调的地址都有效 ) , 和 取消授权回调页 ( 当用户在我的应用管理页取消对你的应用授权时 , 开放平台会回调到这个地址www.baidu.com )
* 新浪开放平台-文档-微博API - OAuth2.0接口 - 请求授权, 获取授权 - 点击请求授权查看 - Oauth2/authorize是接口名称 , URL , 请求方式, 最重要的是 请求参数
* 请求参数中, 申请应用时分配的AppKey, client_id
* 请求参数中, 重定向的授权回调地址, redirect_url
* 返回数据中, 授权码code , 接口获取授权后的access_token
* 返回数据中, 如果回传参数, status
支持get请求, 可以直接在网页中进行演示, 输入 URL+接口名称+key+重定向地址, 就会直接跳到微博的登录界面 , 然后用户登录授权后, 就可以看到页面的url变成 重定向的地址+授权码code code=21243243..
, 表示使用哪些字段可以请求当对应页面
* 请求web页面, 会去加载这样的webView, 该web页面 就是让用户去输入自己的用户名和密码, 然后对应的 URL 就会发生跳转, 该URL里面包含授权码code
3.OAuth授权中令牌
token的中文名 令牌 , 有一定的时效性, 过期了就需要重新登录
用授权码code, 去交换token , token主要用于移动端, 因为早期PC 和 地洞并不普及时, 查资料的设备很可能不是私有的, 如果使用了token,记住了, 那么信息就存在太大的安全隐患
4.为什么越来越多的应用喜欢使用OAuth授权 和 SSO授权
越来越多的第三方应用 喜欢使用微信, 微博qq等进行登录, 因为这样可以方便用户操作,提高用户留存率, 也可以方便的获取用户信息, 同时也提高了产品的曝光率
只要登录, 那么就可以通过token 获取跟你相关的信息都可以获取到, 你关注的朋友, 你发布的微博
5. SSO与OAuth的对比
SSO授权, SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制. 使用SDK授权 , 会跳转到例如新浪微博的官方应用
SSO授权的劣势, 如果用户没有安装该应用, 就无法进行登录