软考找老孙
软考找老孙guoruankao.com
返回网站更新记录
新功能2026-04-23 15:10

微信公众号一键登录上线:在微信里看课,无需扫码

在微信内打开官网时,登录页和课时未登录态页新增"微信一键登录"按钮。点击按钮直接走微信公众号 snsapi_userinfo 授权流程,授权后凭 unionid 自动匹配/建号并签发 token,回跳原页面继续阅读,不再需要切出去扫二维码。

#登录体验#微信生态#公众号#付费课时

用户会看到什么变化

  • 用户在微信里打开课程链接,看到付费课时提示登录时,不用再切到默认浏览器扫码,按钮一点就完成登录
  • 已经关注公众号或在小程序使用过的用户,登录后可以直接看到自己已开通的课程

更新说明

背景

很多用户是通过公众号推文或朋友圈分享点进官网的,此时是微信内置浏览器(不是 Safari/Chrome)。此前这种情况登录体验很差:

  • 微信里扫二维码登录,需要切到系统浏览器,很多用户直接放弃
  • 未登录用户打开付费课时,只能看到"请登录"提示,没有顺畅的登录入口

新的流程

  1. 检测浏览器 UserAgent:含 MicroMessenger → 是微信内置浏览器
  2. 登录页和付费课时未登录态额外显示「微信一键登录」按钮
  3. 按钮点击后跳转公众号授权 URL(scope=snsapi_userinfo)
  4. 用户在微信弹窗点「允许」后回跳到 /api/auth/wechat/oa/callback
  5. 后端用 code 换取 access_token,拉取 openid + unionid + 用户信息
  6. 通过 unionid 查找/创建本站用户,签发 token,重定向回原页面

统一身份

同一个微信用户可能在多个端使用:

  • 小程序 ruankao-miniprogram-2026
  • 公众号「软考找老孙」
  • 官网 www.guoruankao.com

这三端授权拿到的 openid 是不同的(小程序 openid ≠ 公众号 openid),但 unionid 相同。后端以 unionid 为统一身份主键,无论从哪个入口登录,拿到的都是同一个用户账号和已开通课程。

使用场景举例

  • 用户 A 在小程序里买了冲刺合集,后来在公众号推文点开 /courses/chongci-heji/lessons/200
  • 之前:看到"请登录"提示,不会扫码,直接退出
  • 现在:点「微信一键登录」→ 授权 → 回跳课时页 → 直接看到已开通的付费内容

安全注意

  • OA 回调路由做了 code 重放防护、state 校验
  • snsapi_userinfo 只授权一次后端持有 access_token,不回传前端
  • 首版先走测试路由 /wechat-oa-test 验证 unionid 绑定正确再切正式路由
意见反馈
回到顶部咨询
【过软考找老孙】微信公众号一键登录上线:在微信里看课,无需扫码 | 网站更新记录 | 软考找老孙