# App平台与登录方式 微信小游戏/TapTap H5的[在线入口门禁](在线登录与进度门禁.md)属于对应游戏类型;App仍只用登录名密码,不新增App在线存档模块,也不以本机试玩建议掩盖其他类型的认证/进度缺口。 登录交互规则:微信小游戏(含桌面图标)、TapTap内H5、TapTap桌面发行端与桌面快捷入口优先校验/复用有效登录态并自动登录;无有效登录态或平台要求授权时,允许走对应平台官方流程。TapTap可按实际运行环境跳转TapTap客户端或官方登录页,完成后回到游戏;微信小游戏使用其实际微信运行环境允许的官方登录/授权,不擅自改成网站扫码OAuth。需要官方授权不等于登录失败,不禁止必要的官方登录按钮/页面,也不强制每次重复授权。取消、认证失败或读档失败时仅提供实际状态及重新登录/重试,不提供密码、游客、试玩或离线兜底。TapTap桌面发行端仍是taptap/taptap,微信桌面图标仍是wechat/wechat;操作系统和快捷方式不决定登录方式。TapTap小游戏保留平台登录,独立App仍为app/password及登录名密码。后端必须验证真实凭据、会话和进度归属,不信任客户端自报成功;给出前端配合契约,不擅自修改未授权业务工程。 当前App产品规则固定platform=app、loginMethod=password,只用登录名和密码。参照[应用类型与登录规则](应用类型与登录规则.md)。平台字段与认证方式字段仍分开,不意味着可自由搭配。没有用户名、手机号、邮箱、验证码或游客登录,不增加微信/TapTap登录。 ## 当前接入配置 ```json { "id": "notes", "prefix": "ap", "tokenEnv": "HUOHUA_APP_TOKEN", "loginMethods": ["password"] } ``` 不配置miniappLogin。底层保留的第三方适配器或身份管理API不构成当前App启用第三方登录的许可;不把TapTap H5或小游戏登录搬入独立App服务。 ## 接口 前缀均为/v1/apps/{appId},由App业务后端持有运行令牌调用,前端不直接拿公共服务令牌。 - auth/register:password注册;正文loginMethod=password、loginName、password。 - auth/login:正文loginMethod=password,提供loginName/password。 - sessions/validate与sessions/logout:校验/退出指定会话。 - identities/list:正文sessionToken,底层身份查询能力;当前产品只用password。 - 底层identities/bind(当前不启用跨方式绑定):正文sessionToken和credential;新身份实际验证,属于其他账号时拒绝,不合并资产。 - 底层identities/unbind(当前不启用跨方式解绑流程):正文sessionToken、目标loginMethod与proof;必须重新证明当前账号身份,不可解绑最后一种已启用可用身份。 - auth/change-password:现有账号密码验证和修改规则继续有效。 - auth/deactivate-with-proof:正文sessionToken、operationId、credential,支持以当前已绑定方式的新鲜证明注销账号;账号状态与禁用、撤销全部会话复用同一账号规则。 实际绑定/解绑后全部旧会话撤销,重新登录。身份信息保存在login_identities中,账号不再必须具有单个provider/subject。用户ID公式保持原样;账号绑定多个方式仍返回同一个用户ID。会话响应同时给出user.platform=app和本次loginMethod。 任意外部主体直传的users/resolve以及只凭appUserId创建会话的POST sessions入口已移除,不能用自报用户标识跳过当前登录名密码认证。 ## 部署和验证 local/central使用相同认证模型,按新SQLite/PostgreSQL初始化,不做旧库/旧玩家兼容。Ubuntu 22.04服务器还需确认uname -m,当前交付linux-amd64,不能用系统64位直接推断CPU架构。 本地和隔离数据库模拟认证通过不表示真实第三方授权、实际Ubuntu部署或广告渠道已验收。广告现有先发奖/异步验真流程保持原有业务边界,与登录方式扩展分别验收。