需先调用window.h5api.islogin()检查登录态,未登录则调用login()获取uid/openid;提交分数须经平台认证通道(或由后端校验入库);拉榜需fetch自己服务器接口,注意跨域、data.code业务态判断、rank转数字排序及canvas/dom层z-index与缩放适配。
怎么用 window.h5api 提交分数并拉取排行榜
HTML5小游戏接入平台排行榜,核心依赖渠道 SDK 提供的统一接口(如 window.h5api),不是自己写个 fetch 就能直接连后台的。你提交的分数必须走平台认证通道,否则会被拒绝或无法计入榜单。
典型流程是:游戏结束 → 调用 window.h5api.submitScore()(如果平台支持)或先调用登录态检查 → 再发分 → 最后拉榜。但注意:很多平台(如微信、OPPO、vivo 小游戏)不直接暴露 submitScore,而是要求你先调用 window.h5api.login() 获取用户唯一标识(如 openid 或 uid),再把该 ID 和分数一起 POST 到你自己的服务器,由后端完成校验与入库。
- 务必先执行
window.h5api.isLogin(),未登录时调用window.h5api.login(callback),否则后续操作可能静默失败 - 不要在未确认登录成功前就尝试提交——
callback中的data.uid或data.openid是你后续请求自己排行榜接口的必要凭证 - 平台侧通常不提供「实时拉取全榜」的 JS 接口;
window.h5api.getRankList()这类方法极少存在,绝大多数需你自行实现 HTTP 请求
用 fetch 拉取自己服务器的排行榜数据
拉榜这一步是你完全可控的,但也是最容易出错的环节:跨域、状态码误判、数据结构不匹配,三者占了 80% 的调试时间。
假设你的接口是 /api/rank?uid=xxx,返回格式为:{"code":200,"data":[{"rank":1,"name":"玩家A","score":9999}]},那正确写法是: