微信公众号登录
这篇解决什么
用户端在微信内置浏览器里用公众号网页授权登录,以及给 JS-SDK 签个名。读完能对上 socialType = 31、POST /app-api/member/auth/social-login,以及为什么没有单独的「公众号一键登录」接口。
默认端口 48080。先完成 会员功能开启。客户端表见 三方登录。
示意图:公众号登录走通用社交登录。JS-SDK 签名是另一条接口,给支付和分享用。
从哪接
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 用户端认证 | @RequestMapping("/member/auth") | ruoyi-office/yudao-module-member/.../controller/app/auth/AppAuthController.java |
| 授权跳转 | GET /social-auth-redirect | 同上;userType 固定会员 |
| 社交登录 | POST /social-login | 同上 |
| JS-SDK 签名 | POST /create-weixin-jsapi-signature | 同上 |
| 社交类型 | 31 / WECHAT_MP | SocialTypeEnum |
| 开放平台扫码 | 32 / WECHAT_OPEN | 同上;网站应用,不是公众号 H5 |
| 绑定 | /member/social-user | AppSocialUserController |
| 社交客户端 | 系统管理 → 三方应用 | views/system/social/client/ |
官方菜单仍是三方应用 2448、三方用户 2453。会员中心没有「公众号登录」页。

本系统截图:系统管理 → 三方应用。当前租户还没有客户端。公众号网页授权要在这里建一条:用户类型=会员,社交类型=微信公众号。
示意图:按 MemberAuthServiceImpl#socialLogin。和后台登录相反:未绑定会自动开户。
手机号登录、短信登录也可以带 socialType / socialCode / socialState,登录成功后绑定。公众号里先授权再绑手机,走这两条也能拿到同一条会员。
公众号和小程序的 openid 不能混
WECHAT_MP 是 31,WECHAT_MINI_PROGRAM 是 34。粉丝在公众号和小程序上的 openid 不同。wx_pub 支付必须用公众号这条绑定。
JS-SDK 初始化调 POST /app-api/member/auth/create-weixin-jsapi-signature?url=。内部是 SocialClientApi.createWxMpJsapiSignature(MEMBER, url)。给 微信公众号支付 调起 JSAPI 时,先用这个签名再下单。
三方应用的 clientId / clientSecret 填公众号 appId 和 secret。同一租户下「会员 + 微信公众号」只能一条。管理端那条 ADMIN 不要拿来给用户网页用。
