阅读主题
远程账号界面与稳定加载器
H5 SDK v0.5.0 将账号界面的发布与游戏安装包分开。游戏首次安装稳定加载器并完成登录路由接管,此后兼容该加载器的登录/注册界面与平台配置可由平台更新,无需每次给游戏重新换包。
v0.5.0 远程加载的是登录/注册卡片,不自动创建游戏内常驻浮球。游戏内浮球和账号中心需升级 v0.6.0 并单独调用 mountGameOverlay。v0.4.0 的独立注册和身份流程继续适用,旧安装包保留。
调用方式
ts
const auth = sdk.mountAuth(document.getElementById('sdk-auth-root')!, {
mode: 'login', uiMode: 'remote',
consentVersion: '2026-09',
termsUrl: 'https://your-game.example.com/terms',
privacyUrl: 'https://your-game.example.com/privacy',
onUiStatus: ({state, version}) => showYourUiStatus(state, version),
onAuthenticated: session => enterYourGame(session),
});
// 路由离开时 auth.destroy();这只销毁登录界面,不负责常驻游戏浮球。mountAuth() 同步返回 {destroy,setMode}。uiMode 默认 remote,可显式选择 bundled。加载状态为 loading、remote、fallback、bundled;远程成功带 UI 版本。协议页面替换为真实 HTTPS 地址。
清单为 GET /api/sdk/account-ui/manifest?appId=实际AppID,返回 {protocol:1,version,sha256,url}。模块 URL 为同平台 origin 下 /api/sdk/account-ui/assets/<sha256>.mjs?appId=实际AppID,模块协议为 accountUiProtocol=1,登录工厂导出为 createAuthView。加载器校验来源、路径、App ID、内容摘要和导出约定;远程失败时回退随包卡片。游戏应通过 SDK 调用,不手写绕过校验的 script 标签。
游戏首次需要改什么
- 安装含稳定加载器的 H5 SDK,配置当前游戏 App ID 和平台 API origin。
- 游戏登录路由移除原生账号/密码表单与外层登录卡片,仅保留 SDK 挂载容器;不能把 SDK 再嵌进旧表单。
- 接入游戏自己的可信
exchange回调。游戏服务端保存密钥,完成 PKCE 授权码交换,按gameUserId恢复业务会话与角色。 - 挂载账号界面;登录成功后进入游戏的选服或角色流程。路由离开时销毁挂载句柄,取消尚未完成的加载和登录。
- 保留随 SDK 分发的本地账号 UI,供远程加载失败时回退;为玩家提供明确的连接状态和重试入口。
完成这一轮宿主改造后,兼容的账号界面更新由平台发布。游戏画布、布局容器、退出行为、角色与存档逻辑仍由游戏项目维护。
远程界面如何更新
text
游戏挂载稳定加载器
→ 从配置的平台 origin 获取当前 UI 清单
→ 获取清单指向的不可变版本模块
→ 校验模块内容的 SHA-256
→ 通过 ESM 挂载账号界面
→ 继续使用 SDK 认证与游戏服务端交换平台发布的是包含确定版本与内容摘要的 UI 模块,不覆盖同一个摘要 URL 的文件。清单决定后续加载使用哪个已发布版本;切回旧版本时仍引用原始工件。
摘要校验用于确认下载内容与清单一致,不能替代 HTTPS 或平台来源信任。客户端只从其配置的平台来源取得发布信息,不接受游戏页面参数随意指定第三方脚本。
远程模块加载失败、内容摘要不符或无法挂载时,加载器回退到随包 UI。界面失败不会绕过账号认证、制造登录状态或切换到其他应用。
更新的范围
| 变更 | 是否通常需要游戏重新适配 |
|---|---|
| 兼容加载器的登录/注册布局、文案、样式、交互修正 | 不需要每次换游戏包,由平台发布远程 UI |
| 已有 SDK 能力范围内的功能入口与应用配置 | 通过服务端配置和兼容 UI 更新生效 |
| App ID、域名、CSP 或宿主容器策略变化 | 需要游戏项目检查自己的配置 |
| PKCE 交换协议、游戏会话或角色绑定协议变化 | 需要游戏客户端/服务端按兼容契约适配 |
| 新增支付供应商、原生桥接、设备权限或 SDK 核心能力 | 通常仍需升级相应 SDK、配置和游戏代码 |
| Android、iOS、Windows 的原生编译代码或商店审核要求 | 不能靠 H5 远程 UI 替代安装包更新与渠道验收 |
“账号界面可远程更新”只描述兼容加载器承接的 H5 界面与配置,不表示所有游戏原生功能均已远程化,也不表示平台可以直接修改游戏存档。
生命周期与失败处理
- 挂载期间显示加载状态;不能因为旧模块尚未到达就同时打开两份账号表单。
- 游戏切换 App ID、退出路由或销毁挂载时,旧请求失效。迟到模块不得重新占用已经卸载的容器。
- 注册成功仍只提示回到登录页;不返回登录会话、不自动创建角色。远程 UI 不改变独立注册语义。
- 刷新后恢复会话仍需服务端验证,不因缓存中的昵称或 token 存在就直接显示已登录。
- 本地回退仅保证 UI 有备用实现;平台 API 断网时应展示重试,不能宣称离线账号登录成功。
接入验收
使用真实目标游戏和其服务端验证:
- 首次加载远程界面,账号注册后回到登录页,再主动登录进入正确游戏角色。
- 平台切换兼容 UI 版本后,重新挂载可读取新版本,游戏不重新构建。
- 远程模块加载失败和摘要校验失败时回退可见,错误不会被当作账号认证成功。
- 加载中离开路由,再返回或切换游戏,迟到响应不会覆盖新容器或另一个应用。
- 手机宽度、软键盘、滚动、协议链接与按钮反馈正常;没有原生登录卡片套 SDK 卡片。
- 生产短信、真实支付和本地测试身份仍按服务端实际能力限制,不能因更新远程 UI 而放开。
现有 PKCE 可信交换、会话恢复和玩家身份规则继续适用。需要游戏内常驻入口时,继续集成 v0.6.0 浮球与账号中心。