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,所以说如果你的应用每个月帮用户发一条状态的话,走上面的流程,一直下去,这个用户的登录状态一直都不会过期,至于为什么,自己去琢磨哦,琢磨透了也就理解了.

相关推荐