调用流程
从登录到获取 code 的完整链路。
1. 登录控制台调用 /api/auth/login 获取 token,或直接使用浏览器 Cookie。
2. 扫码保存账号POST /qr 创建会话,轮询 /qr/{session_id}/poll,授权后调用 /qr/{session_id}/confirm 保存账号。
3. 调用业务接口使用账号 ref + app_id 调用原有 /wxapp/* 接口,或生成启动参数。
接口列表
表格已按使用频率排序,方法、路径、参数和认证要求居中对齐。
| 方法 | 路径 | 用途 | 关键参数 | 认证 |
|---|---|---|---|---|
| POST | /api/auth/login | 账号密码登录 | username,password | 否 |
| POST | /qr?as_base64=true | 生成登录二维码,可走 SOCKS5 | source,proxy,proxy_username,proxy_password | 是 |
| POST | /api/qr/start | 简化扫码创建接口,返回图片 data URI | source,proxy,proxy_username,proxy_password | 是 |
| GET | /api/qr/status?session_id=... | 轮询并自动确认保存账号 | session_id 或 uuid | 是 |
| GET | /qr/{session_id}/poll | 轮询扫码状态 | session_id | 是 |
| POST | /qr/{session_id}/confirm | 确认授权并保存账号 | session_id | 是 |
| GET | /accounts | 我的账号列表 | - | 是 |
| DEL | /accounts?ref=... | 删除账号 | ref/openid | 是 |
| POST | /accounts/refresh | 手动刷新账号状态 | ref(可选) | 是 |
| POST | /accounts/resync | 重新同步账号资料 | ref(可选) | 是 |
| POST | /wxapp/getCode | 获取小程序 code | ref,app_id | 是 |
| POST | /wxapp/getPhoneNumber | 获取手机号 | ref,app_id | 是 |
| POST | /wxapp/operateWxData | 小程序数据能力 | ref,app_id,payload | 是 |
| POST | /wx/getuserinfo | 获取 YYB 账号用户信息 | ref | 是 |
| GET | /api/web/oauth/start | 生成网页授权地址 | - | 否 |
| GET | /api/web/oauth/callback | 网页授权回调并换 Cookie | code,state,appid | 是/授权态 |
| POST | /api/web/oauth/exchange | 网页 code 换 Cookie | code,state,appid | 是/授权态 |
| POST | /api/yyb/launch-param | 生成云函数参数 | app_id,entry_url | 是 |
| GET | /api/me | 当前登录用户 | - | 是 |
| POST | /api/users | 新增控制台用户 | username,password,role | 管理员 |
字段说明
扫码来源和状态是最容易混淆的字段,单独列出。
| 字段 | 位置 | 可选值 | 说明 |
|---|---|---|---|
| source | 创建接口 JSON body / 兼容 query | yyb gameassist | 应用宝 / 手游助手登录来源,不传默认应用宝;body 优先。 |
| proxy | 创建接口 JSON body | HOST:PORT / socks5://HOST:PORT / socks5h://HOST:PORT | 留空直连;也支持 URL 内的账号密码。SOCKS5 由服务器连接,域名由代理解析。 |
| proxy_username / proxy_password | 创建接口 JSON body | 可选,UTF-8 各最多 255 字节 | URL 已含认证时留空;只在会话内存中使用,不回传、不写入账号数据库。 |
| session_id | /qr/{session_id} path | 二维码会话 ID | 由 POST /qr 返回,用于轮询和确认授权。 |
| status | 扫码状态 | pending / scanned / authorized / confirmed | 只有 confirmed 表示账号已保存到「我的账号」。 |
| ref | 业务接口 body/query | 账号 ID / OpenID / UIN | 用于指定调用 code 的账号。 |
| code | /api/web/oauth/exchange body/query | 网页授权 code | 微信公众号网页授权返回的一次性 code。 |
| state | 网页授权参数 | 授权流程返回值 | 优先使用 /api/web/oauth/start 返回的 state。 |
| cookie | 换码响应 data | Cookie Header | 目标网页回调返回的会话 Cookie,可用于后续网页接口。 |
外部 API:SOCKS5 扫码登录
curl -X POST 'https://HOST:PORT/api/qr/start' \
-H 'X-Auth-Token: TOKEN' \
-H 'Content-Type: application/json' \
--data '{"source":"yyb","proxy":"socks5://HOST:1080","proxy_username":"USERNAME","proxy_password":"PASSWORD"}'
curl --max-time 60 -H 'X-Auth-Token: TOKEN' \
'https://HOST:PORT/api/qr/status?session_id=SESSION_ID'获取 Token 与查看 Swagger
curl -X POST 'https://HOST:PORT/api/auth/login' \
-H 'Content-Type: application/json' \
--data '{"username":"USERNAME","password":"PASSWORD"}'
# data.token → X-Auth-Token
# data.qrcodeUrl → 展示二维码 data URI
# data.session_id → 后续轮询会话 ID
# data.state == "confirmed" → 账号保存成功
# Swagger: /docs/index.html
# OpenAPI: /openapi.json代理只在创建时传一次;二维码、轮询、授权换码、资料和头像复用同一代理,失败不回退直连。代理不用于浏览器到本服务的请求,不自动改变账号长期代理或保活配置;临时同出口换码请使用 /api/wx/code 并显式传回原代理。建议通过 HTTPS 传递 Token 和代理密码;长轮询读取超时至少 60 秒,重复调用间隔建议 1–2 秒,收到 confirmed 后停止。服务重启后重新登录获取 Token 并创建新二维码。
扫码后使用原代理换 code
临时代理不自动绑定账号。需在代理到期前传回同一地址和认证信息。
POST /api/wx/code
curl --max-time 65 -X POST 'https://HOST:PORT/api/wx/code' \
-H 'X-Auth-Token: TOKEN' -H 'Content-Type: application/json' \
--data '{"ref":"ACCOUNT_REF","app_id":"APP_ID","proxy":"socks5://HOST:1080","proxy_username":"USERNAME","proxy_password":"PASSWORD"}'
# 白名单代理省略 proxy_username / proxy_password
# data.code 为结果;data.proxy_applied=true 表示代理已应用HTTPDNS、协议登录和换码使用请求级 SOCKS5;失败不回退直连、不存储代理密码或临时协议会话。此模式使用刚扫码获得的凭据,过期时请重新扫码。省略代理字段则保留原行为,后台保活不变。调用方访问业务 preLogin / getInfo 时也需使用原代理。
示例
应用宝与手游助手只需要切换 source。
分步扫码保存账号(同样支持 SOCKS5)
curl -X POST 'https://HOST:PORT/qr?as_base64=true' \
-H 'X-Auth-Token: TOKEN' \
-H 'Content-Type: application/json' \
--data '{"source":"gameassist","proxy":"socks5://HOST:1080"}'
curl -H 'X-Auth-Token: TOKEN' \
'https://HOST:PORT/qr/SESSION_ID/poll'
curl -X POST -H 'X-Auth-Token: TOKEN' \
'https://HOST:PORT/qr/SESSION_ID/confirm'获取 code 与启动参数
curl -X POST https://wx.a5t.cn/wxapp/getCode \
-H 'X-Auth-Token: TOKEN' \
-H 'Content-Type: application/json' \
-d '{"ref":"OPENID或ID","app_id":"wx..."}'
curl -X POST https://wx.a5t.cn/api/yyb/launch-param \
-H 'X-Auth-Token: TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app_id":"wx...","entry_url":"?"}'UIN 如果扫码资料未返回,会在首次获取 code 建立会话后自动同步到「我的账号」;这属于正常链路,不影响扫码入库。
网页授权
微信公众号网页接口:先生成授权地址,再用一次性 code 换取目标网页 Cookie。
生成授权地址
curl https://HOST:PORT/api/web/oauth/start
code 换 Cookie
curl -X POST https://HOST:PORT/api/web/oauth/exchange \
-H 'X-Auth-Token: TOKEN' \
-H 'Content-Type: application/json' \
-d '{"code":"CODE","state":"1"}'响应 data.cookie 是目标网页接口需要的 Cookie Header。网页授权 code 一次性有效,请勿写入日志。
在线调试
用于快速验证 token 和接口返回。
等待发送请求...