接口文档

微信网页授权接口文档

面向业务网站与 App 的统一接入说明。请根据服务号来源选择对应章节:平台统一微信登录,或自有服务号授权(可选)。

租户共享平台服务号

一、平台统一微信登录

适用于不使用自有服务号的租户。平台托管微信服务号与 PC 网站应用,业务系统只需保存 site_key、site_secret 和 redirect_uri。

1. 授权请求

GET http://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=snsapi_userinfo\nsite_key=YOUR_SITE_KEY\nsign=HMAC_SHA256(上述字段, SITE_SECRET)

自动模式:不传 login_mode 或传 auto 时,微信内未指定 scope 默认使用 snsapi_base 静默登录,只保证返回 openid。需要昵称头像时显式传 scope=snsapi_userinfo,由用户确认授权;电脑浏览器继续使用 PC 扫码。

2. 回调与验票

业务回调收到一次性 ticket、state 后,服务端立即请求:

POST http://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}}

4. 授权确认与重复回调

SDK 场景 h5_userinfo 对应接口参数 login_mode=h5、scope=snsapi_userinfo。用户在微信内确认后可获取昵称和头像;h5_base 对应 snsapi_base 静默授权,通常只有 openid。电脑扫码使用 login_mode=website,自动采用 snsapi_login。

同一微信回调若被手机浏览器重复请求,授权中心会在短时间内复用首次成功的跳转结果。业务回调可能收到相同 ticket,只能在服务端验票一次,并由业务系统根据 Session 处理重复访问。OAUTH_STATE_EXPIRED 表示授权状态过期,AUTHORIZATION_PROCESSING 表示首次回调仍在处理,WECHAT_USERINFO_FAILED 表示获取微信用户资料失败;这些情况可重新发起授权。

租户自有服务号

二、自有服务号授权(可选)

仅适用于租户坚持使用自己的服务号。会员套餐开放多少个自有服务号,租户即可在额度内授权并使用多少个;额度为 0 时需先升级套餐。平台管理员配置开放平台组件、租户完成服务号授权后,H5 与 PC 仍使用和平台公共服务号完全相同的业务接口与 SDK。

1. 前置配置

在后台“站点基础设置 → 开放平台授权(仅自有服务号,可选)”配置组件凭证、微信服务器回调地址、统一 OAuth 回调地址,并上传业务域名验证文件。租户在“我的公众号”完成管理员扫码授权。

2. 授权请求

请求地址仍为 GET http://auth.aikelaidev.cn/oauth/authorize,参数与上方完全一致;自动模式下,手机浏览器和微信内使用站点绑定的自有服务号,电脑浏览器使用平台网站应用扫码,租户无需维护两套接口。手机系统或浏览器若限制自动打开微信,用户需允许跳转或在微信中打开当前页面。两种来源的用户应优先通过 unionid 关联,无法取得 unionid 时由业务系统提供账号绑定。

3. 回调与验票

回调收到 ticket 后,调用 POST http://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,不能仅凭浏览器参数登录。