喵玩星球 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 等)。
  • 不允许存在恶意的代码执行(如挖矿、跳转外部钓鱼网站等)。