oauth原理解析
来源:互联网 发布:万网域名申请流程 编辑:程序博客网 时间:2024/06/07 03:34
1、用appkey换取code
访问https://目标网站.com/authorize?appkey=xxxxxx&redirect_uri=https://我们的网站(第三方).com/callback_url&response_type=code&state=STATE
检测发现用户没有登录的情况下,引导用户到授权页面去授权,这个地址是位于目标网站的一个网址,带入了我们的appkey,以及我们的回调地址redirect_uri。
2、用code换取token
用户授权完了以后,会跳到我们的刚才填的回调地址,也就是我们的网站,他是这样的https://我们的网站(第三方).com/callback_url?code=xxxx直接在url里把参数带过来。
我在页面里获取这个code就可以了,比如:
if(null != $this->input->get('code')) { $code = $this->input->get('code'); $url = "https://目标网站.com/access_token?appkey=xxxxxx&secret=xxxxxx&code=".$code."&grant_type=authorization_code"; $this->load->library('CurlRequest'); $res = $this->curlrequest->https_request($url); echo $res; }else { exit("获取code失败!"); }
这里其实是我们在后台,访问了一个url,这个url里我们把appkey,secret,code都传进去,会返回来一个json,这个json里面有token的全部信息。这个操作其实是我们在后台进行的一个api访问,这个叫做curl操作。
返回的信息包括:
{"result":{"access_token":"72fe7c5a8f0466b870f66c53c9d6409600062487ef",//token "expire_in":90000,//过期时间 "refresh_token":"ffff",//刷新token "openid":"111111", "shop_name":"xxx", "scope":3, "shop_logo":"http://xx.jpg?w=250&h=250&cp=1"}, "status":{"status_code":0,"status_reason":"success"}}
3、使用token
这个access_token就是我们所需要的,每次通过api查询用户相关信息需要附带进去的一个key,expire_in是access_token的过期时间,refresh_token是用来刷新access_token的token。refresh_token一般有效期比较长,比如说有一个月。
一般是这样使用的:定期通过refresh_token刷新access_token,这样保证access_token在过期前得到刷新。这样access_token就可以一直使用到refresh_token过期前。
refresh_token过期了就没办法了,只能用户重新去授权。
一些关键的知识点:
<1>用户每次登录授权,如果access_token没有过期他是不会主动去更新的。
如果现在的access_token没有过期,那么再次登录授权,返回的access_token和refresh_token都没有改变。
如果现在的access_token已经过期,那么再次登录授权,会返回新的access_token和refresh_token。
<2>refresh_token没办法提前续期。
因为刚才说的第一点的特点,登录授权的时候他只有过期了才变,刷新的时候倒是刷一次变一次,但是没有提供刷新refresh_token的api,那么refresh_token是没办法提前续期让他平滑一直有效的,只能是过期了再去授权。
- oauth原理解析
- OAuth原理
- OAuth解析
- Oauth认证原理
- OAUTH 原理介绍
- oauth认证原理
- OAuth认证原理
- OAuth认证原理
- Oauth工作原理
- OAuth认证原理
- OAuth 2.0 授权原理
- Oauth认证原理
- OAuth 的机制原理
- OAuth 2.0 原理介绍
- OAuth 2原理讲解
- OAuth 2.0 授权原理
- Oauth认证原理图解
- OAUTH认证授权原理
- PHP错误:call to undefined function imagecreatetruecolor
- 数据结构-向量
- JDK和CGLIB生成动态代理类的区别
- 58到家数据库30条军规解读-2
- cocos2dx-lua在ios上实现生成及扫描二维码
- oauth原理解析
- 自定义view的简单实现(一)
- win7 通过Anacoder3安装Python3.6及Numpy等库;并安装MinGW、Theano
- 数据库三范式
- 链接地址,加载地址
- 4流程控制
- Linux的基础命令(非常实用)
- nmp install 在使用原本地址时会出现下载不完全的现象,可以切换的淘宝的源
- Unicode和字符串处理(转)