Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第三方平台refresh_token的保存问题 #798

Closed
liuguangw opened this issue Jul 12, 2017 · 5 comments
Closed

第三方平台refresh_token的保存问题 #798

liuguangw opened this issue Jul 12, 2017 · 5 comments

Comments

@liuguangw
Copy link

我用的环境

PHP 版本:7.0
overtrue/wechat 版本:composer安装的最新版

问题及现象

第三方平台refresh_token的保存问题,
根据微信开发平台的第三方平台文档,第三方平台代公众号实现业务时,需要公众号的access_token,access_token是有时间限制的,过期了之后,可以调用刷新接口,重新获取新的access_token。
根据你们的文档,调用授权方api只需要两个参数: 公众号的appid和公众号的refresh_token,因此可以推测出你们是内部刷新的,我也看了一下你们的
相关代码,发现确实如此,但是这样就一个问题,如果用refresh_token刷新,并获取到了新的access_token,那么我们数据库内保存的公众号的refresh_token就会失效,然而你们却并没有一个接口,让我们读取新的refresh_token,那么公众号的refresh_token如何去保存呢
所以我认为这里有一个bug,我决定应该在renew里面应该加入下面代码,从而让我们判断refresh_token有没有改变,然后更新数据库内的数据

$this->authorizer->setRefreshToken($token['authorizer_refresh_token']);
@mingyoung
Copy link
Collaborator

mingyoung commented Jul 12, 2017 via email

@liuguangw
Copy link
Author

嗯?是这样吗,我测试一下先

@lisiqing
Copy link

lisiqing commented Sep 21, 2018

@mingyoung refresh-token 不是固定的,每次刷新后都会变。

@liuguangw 在分布式系统中,你需要etcd或redis等有状态应用对 token对进行保存。每次刷新过程,更新etcd或redis的token对。

@mingyoung
Copy link
Collaborator

mingyoung commented Sep 21, 2018

@lisiqing
access_token 每次刷新会变,refresh_token 重新授权才会变。

@lisiqing
Copy link

@mingyoung Wechat的token机制和OAuth的标准差别好大啊。 发现,整个国内开发环境都不怎么遵循RFC标准,参数命名各成一派。(难道是国内开发者看不懂英文...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants