我想要实现这样的功能:
在电商网站中,用户通过豆瓣账号登陆(OAuth授权),然后购买东西。购买完成时,有个“发布到豆瓣”的复选框,如果用户勾选,就可以自动在豆瓣发布这个订单/商品。
根据常规思路,我可以在用户登陆时,把Access Token存放在session里,完成订单时,用这个Access Token去发布消息。
但是。。。
这个账号可能连接了新浪微博、豆瓣、网易,但是用户只通过其中一个登陆,我就无法获知另两个的Access Token,也就没法在多个平台上发布消息。因为我显然不可能让用户在完成订单的时候把各种平台的授权页面又点一遍……
如果在用户连接平台时,把Access Token记录在数据库中,这个问题就可以解决了。
那么,Access Token有效期是多久呢?我查了一下各个API的,分别是几个小时到一个月不等,所以问题又变得纠结了……
其实access token应该是不过期的,至少在国外的网站是这样。比如在twitter的faq(https://dev.twitter.com/docs/auth/oau...)里面有这样的描述
而facebook针对离线应用,有专门的offline授权,只要用户启用了这个授权,那么你的token也不会过期。
我在国内的开放平台文档里还没有看到相关的描述,如果真是按你说的几个小时或者一个月过期,那就太不应该了,他们很明显就把这玩意当作普通的session对待了,可能就直接放到了缓存中。因为我们知道memcached的缓存最大生存时间就是一个月:),他们会这么干的。