当access token过期后,可以通过refresh token去请求更新access token,当然需要服务器端支持这个逻辑,OAuth2.inc中已经有了相应代码。添加mongooauth驱动中对grant_type的支持
/**
* Overrides OAuth2::getSupportedGrantTypes().
*/
protected function getSupportedGrantTypes() {
return array(
OAUTH2_GRANT_TYPE_AUTH_CODE,
OAUTH2_GRANT_TYPE_USER_CREDENTIALS,
OAUTH2_GRANT_TYPE_REFRESH_TOKEN
);
}
然后按照前面的流程获取access token,返回结果如下:
{
"access_token":"d9908d26b64e1dc939d1aff7e9a05422",
"expires_in":3600,
"scope":null,
"refresh_token":"431238cd8d73b69512c6108e1b1e0c66"
}
可以看到服务器一并返回了refresh token。refresh_token用在access token过期后重新换取access token,省去用户重新授权。重新获取请求如下:
http://localhost/oauth/server/examples/mongo/token.php?
client_id=50001&
client_secret=pwd&
grant_type=refresh_token&
refresh_token=6cec87a92743accedae7bacd02f87049
需要在继承OAuth2类的数据库驱动类添加生成和获取refresh token的方法,示例代码如下:
/**
* Implements OAuth2::setRefreshToken().
*/
protected function setRefreshToken($refresh_token, $client_id, $expires, $scope = NULL) {
$this->db->refresh_tokens->insert(array(
"_id" => $refresh_token,
"client_id" => $client_id,
"expires" => $expires,
"scope" => $scope
));
return;
}
/**
* Implements OAuth2::getRefreshToken().
*/
protected function getRefreshToken($refresh_token) {
return $this->db->refresh_tokens->findOne(array("_id" => $refresh_token));
}
换取access token成功后服务器会返回一个新的access token和refresh token
{
"access_token":"3266e198e6c0ed9b1cdd8edb47ed499a",
"expires_in":3600,
"scope":null,
"refresh_token":"38780eed063dd3765dd93719f915fdcf"
}
refresh token的有效期也可以在OAuth2的类里面调整,比access token有效期长很多。
分享到:
相关推荐
RFC 6749 OAuth 2.0 授权框架 (正式版中文翻译,PDF)
通过点击viewbutton获取用户openid,实现方式oauth2.0认证
OAuth2.0授权码模式.doc OAuth2.0授权码模式的文档,希望可以帮助学习者
基于Django2.1.2的OAuth2.0授权登录 大学生课程设计 基于Django2.1.2的OAuth2.0授权登录的课程设计 自己大二写的课程设计
开放平台标准协议简介之RFC 6749-OAuth 2.0授权框架; The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource ...
springboot 集成oauth2.0服务器,基于oauth2.0授权码形式集成
asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理核心代码,详情: https://www.cnblogs.com/wgx0428/p/12315546.html
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
IOS最新新浪微博开放平台Oauth2.0授权获取Access_Token的Demo
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...
实现OAuth2授权,并且实现单点登录的小例子,请使用vs2015打开
内容只为接口开发,配合前端和移动app调用使用,不包含html页面,基于springboot+oauth2.0+jwttoken鉴权(内有怎么使用redistoken和数据库token注释)+restful风格+阿里短信+阿里消息推送+车牌识别等。该项目为工作...
Java,腾讯微博通过OAuth2.0授权,可发文本微博的示例源代码。
一、淘宝OAuth2.0 SDK制作介绍 授权步骤 1、Request至用户授权页面:https://oauth.taobao.com/authorize,回调得到Code;(见callback.php页面里GetAuthorization_Code()函数) 2、得到Code后,把Code及其它必要...
完整Oauth 2.0 代码实现,包含数据库脚本,使用说明,导入数据库脚本,修改数据库配置可直接运行。
该套代码主要用于开发微信公众账号,定制菜单和消息自动回复。这两个功能可以参考imooc里的两个微信开发教程来学习。该代码在这基础上集成了OAuth2.0网页授权。
基于Owin中间件的OAuth2.0身份认证,文章位置https://blog.csdn.net/u013938578/article/details/82956188
Spring boot+Spring Security Oauth2.0,Sprint cloud+Spring Security Oauth2集成。四种认证方式。附带有代码,和案例,案例,还有视频链接。我保证看完就回,如果视频链接失效,评论回复我,我单独再给你一份。