Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 484|回复: 0

开发交流:人人网应用程序的开发第六篇:刷新令牌,使用

[复制链接]

该用户从未签到

发表于 2011-10-24 09:31:57 | 显示全部楼层 |阅读模式
基于Android平台的人人网应用程序的开发


第六篇:刷新令牌,使用户可以自动登录
官方文档:http://wiki.dev.renren.com/wiki/%E4%BD%BF%E7%94%A8Refresh_Token

       根据OAUTH2.0协议的说法,我们获取的access_token有效期很短,人人网最开始应用的时候设定access_token的有效期为24小时,后来延长为2天,后来又延长为7天,现在好像是一个月了,可能开始安全性无法保证,就时间短点,经过这么长时间的测试,已经很稳定了,所以时间就长点了。
   
    即使这样,依然无法实现像OAUTH1.0的那种效果,用户只要输入一次用户名和密码,第三方应用就可以获得access_token和access_secret,保存到数据库或者SharedPreferences中,以后用户不需要重复输入用户名和密码就可以直接登录。那么在OAUTH2.0中,我们如何实现这个效果呢?既然是升级的OAUTH协议,必然有它的简单方法。本讲,我们就说说如何实现让用户一次登陆,以后就可以直接进入应用程序的主界面。

我们在获取access_token的同时,也会得到如下几个值:
{
    "access_token": "10000|5.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-222209506",
    "expires_in": 87063,
    "refresh_token": "10000|5.385d55f8615fdfd9edb7c4b5ebdc3e39.604800.1293440400-222209506",
    "scope": "publish_feed email"
}
? access_token:要获取的Access Token;
? expires_in:Access Token的有效期,一秒为单位;
? refresh_token:用于刷新Access Token 的 Refresh Token;
? scope:Access Token最终的访问范围,既用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限)。

这里的refresh_token就是用来刷新access_token用的。
Refresh Token有效期两个月,用于刷新Access Token。
只要用户在两个月内登陆应用,应用就可以使用Refresh Token刷新新的Access Token(新的Refresh Token也会同时下发)。
这样就可以达到这样一个效果:用户只要不连续两个月未布登陆你的应用,就不需要重新登陆。
PS:如果用户两个月都没来你的应用,你继续保持着用户这个登录状态也没什么必要。

    因此,我们可以在用户第一次登陆的饿时候,记录下access_token和refresh_token,存入数据库或者文件中或者SharedPreferences。用户以后每次登陆,都用refresh_token去刷新access_token,获取新的access_token和refresh_token。这样用户每次登陆的时候去数据库中取出access_token,就可以不用每次都输入用户名和密码了。

注意:使用user-flow的方式,即mobile客户端的方式验证授权是不返回refresh_token的,那么就是说无法刷新access_token,没办法使用户始终保持登陆的状态,这样用户体验岂不是很不好?为此,我问了人人网的技术人员,他们说,就是这么设计的,可能是为了防止用户手机丢失,被别人使用。这里给大家提个醒,如果想要使用户始终保持登陆的状态,就只能使用web-flow的验证授权方式。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 21:52 , Processed in 0.344145 second(s), 38 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表