当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有效期长很多。
分享到:
相关推荐
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
OAuth2.0是一种广泛使用的授权框架,用于在第三方应用与用户资源之间建立安全的数据共享机制。这个框架允许用户授权第三方应用访问他们存储在特定服务提供商(如Google或Facebook)上的数据,而无需分享他们的登录...
OAuth 2.0 是一种授权协议,旨在解决分布式 web 服务和云计算中第三方应用访问受保护资源的问题。在 OAuth 2.0 中,客户端和资源拥有者的角色被分离,客户端代表资源拥有者提出请求来访问受保护资源,但无需资源拥有...
OAuth 2.0 是一种授权协议,旨在解决第三方应用访问受保护资源的问题。该协议将客户端和资源拥有者的角色进行分离,从而解决了传统的基于客户端-服务器的身份验证模型中的问题。 背景知识: OAuth 2.0 是下一代的...
这个过程涉及到微信OAuth2.0授权协议,它是一个安全的身份验证框架,使得开发者可以在遵循一定规则的前提下,访问用户在微信上的部分数据。 首先,我们要理解OAuth2.0的基本流程。当用户在第三方应用中触发授权请求...
然后,作者详细介绍了 OAuth2.0 授权方式的使用,包括授权码的获取、access_token 和 refresh_token 的使用。 知识点 1. 百度网盘客户端的开发 * 使用 Java 语言开发百度网盘客户端 * 实现字符用户交互界面和...
首先,我们来看“新浪腾讯微博分享demo”的核心——Oauth2.0授权机制。Oauth2.0是一种广泛使用的授权框架,允许第三方应用安全地访问用户的社交账户资源,如发布状态、上传图片等,而无需获取用户的登录凭证。在这个...
使用`weibo4j`进行开发,开发者首先需要在新浪开放平台上注册应用,获取到API密钥和回调URL,然后通过SDK进行OAuth2.0的授权过程,获取到访问令牌(Access Token)。有了这个令牌,开发者就可以在用户的授权范围内...
然后,我们通过这个授权码去换取用户的唯一标识——OpenID,以及Access Token。有了这些信息,我们就可以获取到用户的基本信息,如昵称、头像等,完成登录过程。 在这个过程中,PHP的`curl`扩展扮演了关键角色。`...
3. **实现OAuth2.0授权**:处理授权逻辑,获取Access Token。 4. **获取用户数据**:使用Access Token请求用户在人人网的公开信息。 六、安全与最佳实践 1. **Access Token管理**:妥善保管Access Token,避免泄露...
- 定期刷新和更新 access_token。 - 使用 refresh_token 功能避免频繁重新授权。 通过以上步骤,你可以在 Laravel 应用中成功地实施 OAuth2 并集成多个提供商。记住,始终关注安全性,遵循最佳实践,以确保用户数据...
这个“weibo_forever”文件名可能意味着这是一个关于持久化新浪授权的示例,可能包含长期保持用户登录状态的逻辑,如自动续签Token或使用Refresh Token更新Access Token的代码。通过研究这些源代码,开发者可以更...
在本项目中,QQAPI的调用涉及到了OAuth2.0授权协议。OAuth2.0是目前最广泛采用的开放网络标准之一,用于安全地授予第三方应用访问用户资源的权限。在PHP中,通过请求用户的授权码,然后通过授权码获取Access Token,...
7. **获取Access Token**:成功授权后,应用会收到Access Token,它是访问用户数据的凭据。保存这个Token,后续请求用户信息或进行其他操作都需要用到。 8. **请求用户信息**:使用Access Token向社交平台API发送...
通过分析这个源码,开发者可以学习到如何与第三方平台进行交互,如何处理OAuth2.0的授权流程,以及如何在Android应用中集成SDK。此外,还可以了解到如何在不同的登录状态之间切换,以及如何在用户授权后获取并存储...
在iOS开发中,将应用程序与Facebook进行集成,允许...通过对这个源码的学习,开发者可以掌握如何在iOS应用中集成Facebook分享功能,增强用户体验,同时也能了解到OAuth授权、内容创建与分享等社交网络开发的基本流程。
要实现自动化上传,需要对接QQ的开放平台API,这通常涉及到OAuth2.0授权流程,用户需先在QQ开放平台上注册应用,获取AppID和AppKey,然后通过这些信息获取访问令牌(Access Token),以此来安全地访问用户的QQ相册。...
首先,我们需要理解第三方登录的核心机制——OAuth(开放授权协议)。OAuth允许用户提供一个令牌,而不是用户名和密码来让第三方应用访问他们存储在特定服务提供者上的信息。例如,当用户选择通过微信登录一个新的...
深入学习微博应用开发,需要熟悉OAuth 2.0授权协议,理解其四个主要阶段:授权请求、用户授权、访问令牌获取和访问资源。此外,可以查阅新浪微博开放平台的官方文档,获取更多API使用指南和示例。 五、必须交待的几...