在开发微信公众平台如何持久化openid

发布于 2022-09-01 16:17:57 字数 466 浏览 27 评论 0

问题描述:
在开发微信公众平台页面的时候,实现用户持久登录遇到的问题是,微信内的web页面要获取用户的OPENID都是要通过微信OAuth2.0机制的4个步骤:

1 第一步:用户同意授权,获取code
2 第二步:通过code换取网页授权access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
5 附:检验授权凭证(access_token)是否有效

在实际过程中发现这样使得网页的加载速度慢到不行,有没有什么方法可以立即获得当前的用户OPENID。或者获得之后存贮起来发方法?

我有尝试是在首次客户点击自定义菜单时就获得OPENID,然后存在本地,之后所有页面都读取这个OPENID。但这样是有漏洞的。

想问的是有没有微信公众平台能不能实现不用每次打开一个页面就要去获得一次授权来获取OPENID的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

清秋悲枫 2022-09-08 16:17:57

存session

千纸鹤带着心事 2022-09-08 16:17:57

存,session是可以,但我要点击另一个自定义菜单session 就没有了。又要跟微信公众账号取一次openID

微凉徒眸意 2022-09-08 16:17:57

分享一下我的解决办法
1. 首次授权后获得用户openID,建档存库,微信用户openID是固定、唯一的。
2. 本地建库给每一个用户分配一个passport,将该用户的openID与passport做绑定关系。
3. 之后需要获取用户openID的场景,只需要追踪该用户的passport就可以了。

桃扇骨 2022-09-08 16:17:57

不通过授权就想拿到用户 openid?题主你想都不要想,微信是不会那么做的!但是整个流程是可以优化的,snsapi_base 发起的授权,就不需要用户手动同意,往往就是一跳而过,用户不会查觉。

https://github.com/thenbsp/Wechat

九歌凝 2022-09-08 16:17:57

存放在localStorage里

岁月流歌 2022-09-08 16:17:57

答案是不行,在微信里用到openid,必须以snsapi_base或者snsapi_userinfo形式。具体接入可以看这个:https://github.com/navyxie/wechat-develop

羁拥 2022-09-08 16:17:57

请问OPENID存在session里 但是session会过期 如果Session刚好过期用户再次刷新网页 就会因为缺少Code而错误 因为没有重定向授权地址 必须从最初的入口链接跳转到授权页获取openID

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文