喵玩星球文档
喵玩星球 API 参考文档
欢迎来到喵玩星球 (MeowPlay) 开发者中心!我们提供了一套完整的 RESTful 接口与 JavaScript SDK, 帮助你快速将 HTML5 游戏接入云存档、数据流和积分平台。
1. 快速集成 SDK (推荐)
如果你仅想让你的 HTML5 网页游戏获得能力,无需调用底层 API,直接引入我们的 JS SDK 是最快的方案(耗时通常小于3分钟)。
html
<!-- 在你的 game.html 中引入 --> <script src="https://你的控制台域名/sdk/meowplay-sdk.js"></script>
javascript
// 保存玩家存档
MeowPlaySDK.save('slot1', { level: 5, score: 1200, gold: 99 })
.then(res => console.log('保存成功', res))
// 加载玩家存档
MeowPlaySDK.load('slot1')
.then(data => {
// 恢复你的游戏状态
console.log('读取到的数据', data.save.payload)
})
// 上报自定义事件 (埋点)
MeowPlaySDK.track('level_complete', { level: 3, timeSpent: 45 })防作弊签名支持
如果你的游戏含有排行榜,可以在管理员后台获取「SDK Secret」,并在游戏中执行 MeowPlaySDK.setSecret('your-secret'), SDK 将自动给所有请求携带 HMAC-SHA256 签名,防御分数篡改。
2. API 认证 (底层 HTTP 调用)
针对直接与本平台进行服务器间通信的开发者,所有底层接口使用 Bearer Token 作为验证凭证。
获取 Token
POST/api/auth/login
json
// Request Body
{
"username": "developer_studio",
"password": "your_password"
}
// Response (200 OK)
{
"token": "eyJhbGciOiJIUzI1...",
"user": {
"role": "PLAYER", // 权限满足发布游戏
"username": "developer_studio"
}
}Token 使用说明
每个 Token 的有效期通常为 7 天。在所有涉及游戏管理和云存档的操作中,将 Token 附加于 Authorization: Bearer [token] 标头。
3. 游戏管理 API
自动上传并部署 HTML 游戏
POST/api/games/upload
将你的游戏 ZIP 文件上传,平台会自动解压托管。必须包含 index.html。
bash
# CURL Example (Multipart Form)
curl -X POST https://api.meowplay.com/api/games/upload \
-H "Authorization: Bearer {token}" \
-F "title=Super Mario" \
-F "description=Classic jump adventure" \
-F "file=@/path/to/game.zip"通过外部链接部署游戏
POST/api/games
json
// Request Body
{
"title": "喵喵大作战",
"description": "即点即玩的射击网页游戏",
"gameUrl": "https://my-cdn.com/game/index.html",
"coverImageUrl": "https://my-cdn.com/game/cover.png" // Optional
}4. 云存档 API
允许游戏跨设备同步进度。单条存档支持最大 65KB 的 JSON 数据。
保存存档
POST/api/sdk/save
json
// Request Body
{
"gameId": "YOUR_GAME_ID",
"slotKey": "slot1", // 存档槽位名称 (开发自定义)
"payload": { "level": 5, "score": 1200 } // 自定义JSON
}
// Response (200 OK)
{
"message": "Save successful",
"signed": false,
"save": { "id": "...", "slotKey": "slot1", "updatedAt": "..." }
}读取存档
GET/api/sdk/save
支持 ?gameId=xxx (获取全部槽位) 或 ?gameId=xxx&slotKey=slot1 (获取指定槽位)。
json
// Response (200 OK)
{
"save": {
"slotKey": "slot1",
"payload": { "level": 5, "score": 1200 },
"updatedAt": "2026-04-03T10:00:00Z"
}
}5. 数据埋点 API
上报事件
POST/api/sdk/track
json
// Request Body
{
"gameId": "YOUR_GAME_ID",
"eventName": "level_complete", // 推荐: game_start, game_over, level_complete 等
"eventData": { "level": 3, "time_sec": 42 } // 可选附带参数
}
// Response
{ "message": "Event tracked", "eventId": "uuid" }6. 防作弊签名开发指南
如果你选择手动调用 HTTP API,而非 SDK 集成,在开启了防作弊要求时,必须进行防重放与签名计算。
javascript
// Node.js 签名计算示例
const crypto = require('crypto');
function signRequest(gameId, slotKey, payload, timestamp, nonce, secret) {
// 1. 先对 payload 进行 SHA256 哈希
const payloadHash = crypto.createHash('sha256').update(JSON.stringify(payload)).digest('hex');
// 2. 组合签名体: 游戏ID:槽位:数据哈希:时间戳:随机数
const msg = `${gameId}:${slotKey}:${payloadHash}:${timestamp}:${nonce}`;
// 3. HMAC-SHA256 计算
return crypto.createHmac('sha256', secret).update(msg).digest('hex');
}
// 在发出的请求头中必须包含:
// X-GC-Signature: 签名结果
// X-GC-Timestamp: 时间戳 (毫秒)
// X-GC-Nonce: 32位随机字符串7. 附录
7.1 文件上传限制
| 游戏文件最大 | 50 MB |
| ZIP 内最大文件数 | 500 |
| 允许格式 | .html, .htm, .zip |
| ZIP 结构要求 | 必须包含 index.html |
7.2 审核规则
- 游戏不能包含违法违规内容。
- 必须能够正常运行,不可出现严重白屏或报错影响体验。
- ZIP 文件中不允许包含可执行文件 (.exe, .sh, .bat 等)。
- 不允许存在恶意的代码执行(如挖矿、跳转外部钓鱼网站等)。