微信登录:平台凭证与游戏会话分开
微信登录提供平台身份相关凭证;你的游戏还需要自己的会话和业务身份。客户端拿到一个登录 code,不代表已经拿到可永久使用的游戏 token。
正确的交换路径
AppSecret 留在服务端。不要把它写进游戏包、构建配置或公开文档。登录 code 是临时凭证,应尽快使用,避免在日志中记录完整值。
明确四个失败点
| 阶段 | 可能的问题 | 客户端行为 |
|---|---|---|
wx.login | API 失败或环境不符 | 提示重试,不伪造成功 |
| 结果检查 | 没有有效 code | 停止后续交换 |
| 自有服务端 | 超时、微信交换失败、账号限制 | 区分网络与业务错误 |
| 后续会话 | 过期、撤销、其他端登录策略 | 进入明确的重新登录流程 |
浏览器演示可以使用模拟身份,但必须标识“模拟”,不能把一个本地随机字符串当成已经通过微信认证的用户。
登录状态也是状态机
未登录 → 登录中 → 已登录,失败则回到可重试状态。并发业务请求遇到会话过期时,避免每个请求都触发一次登录,导致重复弹窗和竞态。
会话 token 的存储、过期和清理要与服务端协议一致。展示昵称和头像还可能涉及独立的平台能力与用户选择,不应由“登录成功”推导出“已获得所有用户资料”。
给 AI 的规格
平台固定微信小游戏;浏览器分支明确标记模拟。
用 wx.login 获取 code,由我的 HTTPS 服务端换取游戏会话。
客户端不包含 AppSecret,不打印 code/token。
列出登录中、失败、重试与会话失效的 UI 和并发处理。
提供真机验收步骤,不宣称浏览器模拟等同微信登录验证。
依据:微信登录 API、腾讯官方小游戏类型定义及登录注释。原始平台网页本次读取受限,语义交叉核对来自官方类型仓库;基础库与账号要求以发布时文档为准。