有一个需求是用用户的 access token 定期去用户的 SNS 那边获取一些信息。暂时有接微博、豆瓣和 QQ 的 Oauth ,豆瓣和 QQ 的 access token 失效时间比较长还好一些,微博的只有 7 天有效期。
有 refresh token 的话可以更新一下 access token 多用一段时间。
下面是自己今天测试的一些结果:
现在有几个问题:
1
Muninn 2016-04-12 21:36:37 +08:00 1
你作为第三方,写一个应用,要得到访问用户在某些大站的一些资源的授权,用户那里会弹出来大站的授权页面,这要求用户输入帐号密码做验证的。
然后你拿到 access token 和 refresh token 以后,快过期了用 refresh token 刷一下,就省去让用户再输入帐号密码登录然后授权你的这一步了。 |
2
clip OP @Muninn 是的,现在是想了解下细节的地方, access token 快过期的时候用 refresh token 刷完之后, refresh token 也会跟着更新吗?
|
3
Archangel_SDY 2016-04-12 22:00:00 +08:00 1
https://tools.ietf.org/html/rfc6749#page-47
The authorization server MAY issue a new refresh token, in which case the client MUST discard the old refresh token and replace it with the new refresh token. The authorization server MAY revoke the old refresh token after issuing a new refresh token to the client. If a new refresh token is issued, the refresh token scope MUST be identical to that of the refresh token included by the client in the request. 协议对于这一块的说法是 MAY ,所以取决于各家实现. |
4
Muninn 2016-04-12 23:35:07 +08:00
对的 有的一个一直刷 有的每次要换一个新的
看用的库是怎么实现的 |
5
gitb 2016-04-12 23:45:22 +08:00 via Android
微博,我一般在第 5 , 6 天再进行一次授权,这样就能又延长 7 天
|
6
axb 2016-04-13 00:27:31 +08:00
微博的 oauth2 我印象中应该是没有 refresh token 的……非 sdk 应用需要到期前重新授权。
|
7
clip OP @Archangel_SDY 谢谢!明白了。
像下面百度的文档里面写的比较清楚,就是属于每次 issue a new refresh token 的吧! 百度 OAuth2.0 官方参考文档 - 百度开放云平台 http://developer.baidu.com/wiki/index.php?title=%E7%99%BE%E5%BA%A6OAuth2.0%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3 注意: refresh token 的作用:就是换取新的 access token 和 refresh token ,以达到 access token 永久有效。 豆瓣应该也是, QQ 估计是,微博我去试试 SDK 刷新能不能拿到 refresh token 。 |
8
clip OP |
9
clip OP @clip 微博的 SDK 只能够用来登陆认证,不能 refresh ,所以 refresh 还是要通过 API ,通过 API 的话是原来测试到的,不能一直刷新下去。
|
10
erinsnow 2016-09-04 14:21:12 +08:00
quote:
微博的 refresh token 必须用 SDK 的时候才能获取到,去用 API refresh 的时候不再有新的 refresh token 是不是就是说 等 refresh token 过期了就不行了? 楼主你好,我也遇到这些困惑了。 我看了楼上各位的评论解释,可以理解微博做的机制是 refreshtoken 不被自己刷新, 30 天到期后就不能用了,必须用户手动点授权。请问你现在知道答案了吗?的确是这样吗? 我测试的结果很奇怪, refresh 之后,两种 token 返回值都没变,也就是 accesstoken 没被刷新。难道号码不变,有效期就已经延长了?不会吧。。。我测试的日子比较短,但是印象里一个星期以来,都没变过,😅 如果楼主有这方面经验,希望不吝赐教,感谢 |