5.5 KiB
5.5 KiB
微信登录联调:2026-10-12
站点:https://1me.xajuzi.com/state/;服务器:ubuntu@1me.xajuzi.com。
后续真机确认与体验优化
- 2026-10-12 用户已在手机微信内通过「切换登录方式」完成真实微信登录;生产服务 10:40:31 记录
login_success。下文“待真机验证”是此前预检时点的记录,不再代表当前登录状态。跨手机读取仍只有隔离测试覆盖,未声称用户已做跨手机实测。 - 新增「登录成功」弹框,说明当前使用微信或本机浏览器;首页右上角、我的报告顶部持续展示登录方式,并可点击切换。恢复有效会话不重复弹框;错误回调、丢失 Cookie 不显示成功。
- 登录加载慢的实测原因、优化及验证命令见登录反馈与加载优化。
白名单与凭据
- 用户再次确认已将服务器出口 IP
49.233.222.47加入公众号 IP 白名单。 - 从生产服务正在运行的进程环境读取凭据,在服务器调用微信
cgi-bin/stable_token,使用force_refresh:false,未强制刷新已有令牌。 - 返回有效
access_token,未返回40164;复测剩余有效时间为 7168 秒。已确认该配置的 AppID 与wx645d9a7573f1fe9a一致,AppID/AppSecret 校验通过。 - 密钥继续留在 root 私有文件
/etc/juzi/wechat.env(600);服务监听127.0.0.1:8080,站点地址包含/state/。没有将密钥或令牌写入代码、日志、文档或前端。 - 基础接口令牌成功不等于真实用户网页授权成功;后者仍要验证公众号网页授权权限、网页授权域名以及真实微信客户端回调。
本轮修正
- 「我的报告」增加「切换登录方式」,复用现有登录页。已有本机用户可以进入微信登录;重新勾选协议后才发起授权。只切换所选账号,不自动合并、迁移或删除报告;返回可继续原会话。
- 本地只记录最近一次有效登录的方式(
juzi.auth.kind.v1),不存 OpenID 或微信令牌。微信会话失效后,不能用遗留本机随机凭据自动登录另一个账号;需显式重新选择登录方式。同一微信重新登录仍对应同一服务端账号。 - 微信返回错误或返回后 Cookie 未保留时,保持登录页并说明原因,不允许用本机自动恢复掩盖失败。处理后移除 URL 的一次性登录结果参数,避免刷新后反复显示旧错误。
- 服务端拒绝微信响应中的无效 OpenID、异常 HTTP 状态等错误响应;网络失败、平台失败、state 校验失败均不签发会话。
- 增加
[auth/wechat]运行事件:callback_rejected、exchange_failed、login_success。仅记录错误种类、微信数值错误码、HTTP 状态和是否新账号;不记录 code/state、Cookie、OpenID、密钥或令牌。
自动验证
node h5/test/accounts.js
node h5/test/wechat-browser.mjs
node h5/test/report-persistence.mjs
node h5/test/recommendation.js
node h5/test/analyze-timeout.js
H5_BASE_URL=https://1me.xajuzi.com/state/ node h5/test/wechat-production.mjs
- 账号测试覆盖协议、同源校验、state 绑定/一次性使用、跨账号隔离、账号持久化;新增无效 code、空响应、非字符串 OpenID、HTTP 500 和网络错误均拒绝登录的验证。
- 真实 HTTPS +
/state/浏览器测试仅模拟微信上游,覆盖本机→微信→本机显式切换、原报告保留、同一微信跨两个独立浏览器读取同一报告、另一微信无法读取、Cookie 丢失不串号、失败提示不被本机自动恢复掩盖。 - 报告保存与回看、前后台一致性、126 个推荐用例及检测超时回归通过;不调用收费 Face++。
- 公网预检脚本只使用刻意无效的 code,验证授权 URL/绑定 Cookie、真实微信拒绝无效换码、state 防重放、同源与协议校验、匿名报告拒绝及后台保护;不创建微信身份,不表示真人授权成功。
- 部署后公网预检复测通过,新版 HTML/脚本已实际提供;本地和线上代码校验一致,服务与 nginx 均正常。生产日志中的
40029来自上述刻意无效 code 的负向测试,并非一次真人登录失败;尚未收到本轮真人授权成功的回调。
真实微信验收与排查
目前尚不能将模拟授权和基础凭据通过视为真人登录已完成。服务器与无头浏览器不能替用户产生真实微信授权 code,也不在生产环境伪造微信身份。
- 手机微信内打开
https://1me.xajuzi.com/state/,不要选择「在浏览器打开」。 - 若已有本机登录,进入「我的报告」→「切换登录方式」;勾选协议,点击「微信登录」。
- 登录后进入「我的报告」,身份提示应为「同一微信账号可跨手机查看」。首次使用微信身份时列表可能为空:本机账号历史报告不会自动合并。
- 同一微信重新登录或换另一台手机查看,账号和已保存微信报告应一致;无需为了验证登录再次调用收费检测。
- 如微信自身页面提示域名或 scope 权限错误,请核对对应 AppID 公众号的「网页授权域名」是否为
1me.xajuzi.com、是否有网页授权权限;这些设置不能由域名校验文件存在或基础接口令牌通过来推断。
服务端排查命令:
sudo journalctl -u juzi-h5.service --since '10 minutes ago' --no-pager | grep -F '[auth/wechat]'
只需反馈页面是否进入首页/报告列表,或错误页面截图。不要传授权 code、Cookie、OpenID、AppSecret 或接口令牌。