首页 > OAuth的Access Token有效期问题

OAuth的Access Token有效期问题

我想要实现这样的功能:
在电商网站中,用户通过豆瓣账号登陆(OAuth授权),然后购买东西。购买完成时,有个“发布到豆瓣”的复选框,如果用户勾选,就可以自动在豆瓣发布这个订单/商品。
根据常规思路,我可以在用户登陆时,把Access Token存放在session里,完成订单时,用这个Access Token去发布消息。

但是。。。
这个账号可能连接了新浪微博、豆瓣、网易,但是用户只通过其中一个登陆,我就无法获知另两个的Access Token,也就没法在多个平台上发布消息。因为我显然不可能让用户在完成订单的时候把各种平台的授权页面又点一遍……

如果在用户连接平台时,把Access Token记录在数据库中,这个问题就可以解决了。

那么,Access Token有效期是多久呢?我查了一下各个API的,分别是几个小时到一个月不等,所以问题又变得纠结了……


我觉得这个问题不是Access Token的问题,明显应该是SESSION变量的问题吧。
SESSION变量在服务器上的时间是一定的,变量失效之后你的认证也就接着失败了啊
存储到数据库了token的变量一直是存在的所以表示没有鸭梨啊
话说,如果token是短效的话,那存储到数据库中的token岂不是还要定时更新么,这跟实际的操作相违背的说。


其实access token应该是不过期的,至少在国外的网站是这样。比如在twitter的faq(https://dev.twitter.com/docs/auth/oau...)里面有这样的描述

We do not currently expire access tokens. Your access token will be invalid if a user explicitly rejects your application from their settings or if a Twitter admin suspends your application. If your application is suspended there will be a note on your application page saying that it has been suspended.

而facebook针对离线应用,有专门的offline授权,只要用户启用了这个授权,那么你的token也不会过期。

我在国内的开放平台文档里还没有看到相关的描述,如果真是按你说的几个小时或者一个月过期,那就太不应该了,他们很明显就把这玩意当作普通的session对待了,可能就直接放到了缓存中。因为我们知道memcached的缓存最大生存时间就是一个月:),他们会这么干的。

【热门文章】
【热门文章】