0 元给网站接入微信扫码登录,用小程序就够了~
发布时间:2026-10-28 | 浏览:1
0 元给网站接入微信扫码登录,用小程序就够了~
AI 时代,大家或多或少都有了一些做网站的能力。
不知道大家有没有尝试过给自己的网站增加一个登录功能呢?比如微信扫码登录。
我最近就在给我的网站增加微信扫码登录能力。
但经过一番调研发现,微信官方的扫码登录方案要么要营业执照,要么每年交 300 块认证费。
我这个简单的小项目犯不着搞这些复杂的东西。
最终经过一番查找,我发现用微信小程序就能完美绕过这些限制。
效果就是网站弹出一个小程序码:
手机微信扫一扫,网页端自动登录:
点赞关注,接下来我们就一起看看如何实现吧~
在开始之前,先来看下主流方案的对比表格:
企业营业执照 + 开发者资质认证
其实微信开放平台是最正统的方案,用户扫码后直接在微信里弹授权确认,体验也最丝滑。但它要企业资质,个人开发者压根注册不了
公众号方案则需要认证服务号,一年 300,而且还得先有个公司主体
而小程序方案只需要个人身份证实名注册,不需要花一分钱就能搞定
小程序不认证的代价是不能被搜索、不能开通支付、也不能被分享。但咱们就是拿它做个登录跳板,用户只通过扫码进入,完全不需要这些功能。
原理:一码扫完,网页怎么就登录了?
ticket 是中转凭证,每次打开登录弹窗生成一个随机 ticket(32 位 hex),存到 Redis,设 5 分钟过期
小程序码通过 getwxacodeunlimit 接口生成, scene 字段里塞的就是 ticket,用户扫码后小程序从 scene 里取出来
小程序端调 wx.login() 拿到 code,连同 ticket 一起发给后端,后端用 code 调微信的 code2session 接口换到 openid,完成用户身份绑定
网页每隔 1~2 秒请求后端“这个 ticket 登录了没”,一旦后端标记成功,前端拿到登录态,弹窗关闭
核心就是,通过小程序从微信获取唯一标识,绑定到我们的网站里,实现一个唯一标识(微信号)对应一个用户。
有个细节得说明一下,小程序从微信获取到的唯一标识叫 openid,openid 只在一个应用里唯一。 什么意思呢? 就是说,假如一个用户在我的小程序里的 openid 是 123,那么我的小程序里不会有其他用户的 openid 是 123 了,但是不影响别人的小程序里有用户的 openid 是 123。
去微信公众平台注册一个小程序账号,只需要实名 + 微信扫码验证就可以了:
注册完拿到 AppID 和 AppSecret,后面要用。
这里用 Node.js 示例,其他语言同理。
生成 ticket + 小程序码:
scene 最长只能 32 个可见字符,所以用 16 字节 hex 刚好
check_path: false 让生成码时不校验页面是否已上线,方便开发阶段调试
返回的是图片二进制,转 base64 给前端展示
确认登录接口(给小程序调的):
code2Session 就是调微信的 https://api.weixin.qq.com/sns/jscode2session ,传 appid、secret、js_code,换回 openid。
小程序只需要一个"登录确认页",用户扫码后会自动跳到这个页面。
页面 UI 可以做得简单一点:显示个 loading 动画 + "正在确认登录..."的文案就行,用户感知上就是扫完码等一秒就好了。
scene 只有 32 字符 。不要想着往里塞 JWT 或者 URL,只放一个 ticket ID 就行,其他信息让后端通过 ticket 去 Redis 里查。
小程序必须已发布 。 getwxacodeunlimit 生成的码指向的是正式版小程序。如果你的登录页还没发布上线,用户扫了会报"页面不存在"。开发阶段可以设 check_path: false 先把码生成出来,但真机测试还是得至少上个体验版。
本地调试怎么搞? 不需要真机扫码。在微信开发者工具里添加一个编译模式,启动页面填 pages/login/login ,启动参数填 scene=你的ticket ,就能模拟扫码进入的效果。
真机测试走局域网 。手机访问不了你电脑的 localhost ,小程序里的 API 地址要改成你电脑的局域网 IP(比如 192.168.1.8:3000 ),同时开发者工具里关掉"域名校验"。
access_token 要缓存 。微信的 access_token 有效期 2 小时,别每次生成码都重新获取,用 Redis 缓存一下。
总结一下:个人开发者想给网站加微信扫码登录,不用花钱、不用营业执照,注册一个个人主体的小程序就够了。核心就是 getwxacodeunlimit + wx.login + 一个 Redis ticket,整套逻辑并不复杂。
原理:一码扫完,网页怎么就登录了?
动手实现 后端实现 小程序侧 前端:展示二维码 + 轮询
社区 技术文章 技术问答 技术沙龙 技术视频 学习中心 技术百科 技术专区
活动 自媒体同步曝光计划 邀请作者入驻 自荐上首页 技术竞赛
圈层 腾讯云最具价值专家 腾讯云架构师技术同盟 腾讯云创作之星 腾讯云TDP
关于 社区规范 免责声明 联系我们 友情链接 MCP广场开源版权声明
Copyright © 2013 - 2026 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 粤公网安备44030502008569号
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号