微信网页授权接口文档
面向业务网站与 App 的统一接入说明。请根据服务号来源选择对应章节:平台统一微信登录,或自有服务号授权(可选)。
一、平台统一微信登录
适用于不使用自有服务号的租户。平台托管微信服务号与 PC 网站应用,业务系统只需保存 site_key、site_secret 和 redirect_uri。
1. 授权请求
GET https://auth.aikelaidev.cn/oauth/authorize
| 参数 | 必填 | 说明 |
|---|---|---|
site_key | 是 | 站点唯一标识 |
redirect_uri | 是 | 已登记的 HTTP 或 HTTPS 回调白名单地址;协议、主机、端口和路径必须与登记值完全匹配 |
login_mode | 否 | 推荐省略或传 auto:微信内直接进入 H5 授权;普通手机浏览器显示微信唤起与复制链接引导;电脑浏览器自动展示扫码;仅调试时传 h5 或 website |
entry_url | 否 | 普通手机浏览器引导页展示的业务登录入口;必须与 redirect_uri 同源并参与签名 |
scope | 否 | H5 可传 snsapi_base 或 snsapi_userinfo;PC 自动使用 snsapi_login |
timestamp、nonce | 是 | 服务端生成 |
sign | 是 | 去掉 sign 后按字段名排序,拼接 key=value,以 site_secret 做 HMAC-SHA256 |
手机浏览器说明:微信网页授权只能在微信内置浏览器完成。普通手机浏览器会显示“尝试打开微信”“复制微信授权登录链接”和业务系统入口;若系统禁止唤起,请复制授权登录链接到微信聊天窗口打开,即可继续授权并返回原业务回调。
签名计算:删除 sign 字段,忽略空值,按参数名 ASCII 升序排列,拼接为 key=value&key=value,再使用站点 site_secret 进行 HMAC-SHA256;最终结果使用小写十六进制。
timestamp=1710000000\nnonce=abc123\nredirect_uri=https://your.example.com/oauth/callback\nscope=h5_userinfo\nsite_key=YOUR_SITE_KEY\nsign=HMAC_SHA256(上述字段, SITE_SECRET)
2. 回调与验票
业务回调收到一次性 ticket、state 后,服务端立即请求:
POST https://auth.aikelaidev.cn/api/oauth/ticket/verify
{"site_key":"YOUR_SITE_KEY","ticket":"CALLBACK_TICKET","timestamp":1710000000,"nonce":"SERVER_RANDOM","sign":"HMAC_SHA256_SIGNATURE"}3. 成功返回
{"code":0,"message":"ok","data":{"openid":"微信用户 openid","unionid":"可选 unionid","nickname":"微信昵称","avatar_url":"头像地址","scope":"snsapi_userinfo","expires_in":7200}}二、自有服务号授权(可选)
仅适用于租户坚持使用自己的服务号。会员套餐开放多少个自有服务号,租户即可在额度内授权并使用多少个;额度为 0 时需先升级套餐。平台管理员配置开放平台组件、租户完成服务号授权后,H5 与 PC 仍使用和平台公共服务号完全相同的业务接口与 SDK。
1. 前置配置
在后台“站点基础设置 → 开放平台授权(仅自有服务号,可选)”配置组件凭证、微信服务器回调地址、统一 OAuth 回调地址,并上传业务域名验证文件。租户在“我的公众号”完成管理员扫码授权。
2. 授权请求
请求地址仍为 GET https://auth.aikelaidev.cn/oauth/authorize,参数与上方完全一致;自动模式下,手机浏览器和微信内使用站点绑定的自有服务号,电脑浏览器使用平台网站应用扫码,租户无需维护两套接口。手机系统或浏览器若限制自动打开微信,用户需允许跳转或在微信中打开当前页面。两种来源的用户应优先通过 unionid 关联,无法取得 unionid 时由业务系统提供账号绑定。
3. 回调与验票
回调收到 ticket 后,调用 POST https://auth.aikelaidev.cn/api/oauth/ticket/verify 验证。不要使用公众号 AppSecret 或组件 AppSecret 生成业务签名,签名只使用站点 site_secret。
{"site_key":"YOUR_SITE_KEY","ticket":"CALLBACK_TICKET","timestamp":1710000000,"nonce":"SERVER_RANDOM","sign":"HMAC_SHA256_SIGNATURE"}4. 返回结果
返回结构与平台统一微信登录一致:code、message 和 data(openid、unionid、昵称、头像、scope、expires_in)。
三、安全与接入检查
- 业务回调支持 HTTP 或 HTTPS,但必须提前登记白名单;协议、主机、端口和路径必须完全匹配。建议生产环境使用 HTTPS。
site_secret只能保存在业务服务端,不得出现在前端或 App 公共代码中。- 回调收到 ticket 后立即验票;ticket 只能使用一次。
- 验票成功后再创建或更新本地 Session,不能仅凭浏览器参数登录。