access token已过期,怎么用refreshtoken刷新accesstoken
accesstoken已过期,怎么用refreshtoken刷新accesstoken。不指定
justwinit2014-2-1716:13大|中|小
WEB2.0评论(0)
需要重新获取code,然后得到access_token。
即要重新调用授权界面。需要用refreshtoken刷新accesstoken。
如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据。
建议每次登陆的时候都用refreshtoken去刷新一次accesstoken。
来自:http://zhidao.baidu.com/link?url=lowvWKZOrelWHzeDa_AnrISFyS_QFZAnJ_WG6iqBRNZhikW32LfCBrJ8G_bPt39RV0fTXI2Szf4QVpLZuBXEgqcr4a68YmVS3m8WJ38aN-K
在OAuth2.0中用户的登录状态需要通过不断刷新来维持.
例如上面提到的应用.假设更详细的场景,这个应用在用户授权之后,每天给用户的人人网发送一条状态报告当天的日期.
用户授权之后,获取到一个accesstoken和一个refreshtoken,还有一个是sessionkey,这个是国内大多数开放平台自己添加的一个标记,可以让用户使用http来调用api,如果没有它,用户只能通过https来调用api.sessionkey的生命周期和accesstoken是相同的.
我们把这三个值存到一个队列的数据库中.
然后,在每天的10点,我们遍历这个数据库表,取出它的accesstoken和sessionkey,然后用他们去请求api,如果发现他们已经过期,我们就需要利用refreshtoken去重新刷新,获取新的accesstoken和sessionkey.然后利用他们去请求api,如果请求的时候提示refreshtoken也已经过期,那么这时候用户的登录状态就会过期,这说明这个用户至少2各月没有在此应用活跃了,这个活跃不光指用户自己在使用应用,也包括应用自动调用用户api的行为.
每次刷新token的时候都会返回一个新的refreshtoken,所以说如果你的应用每个月帮用户发一条状态的话,走上面的流程,一直下去,这个用户的登录状态一直都不会过期,至于为什么,自己去琢磨哦,琢磨透了也就理解了.