Skip to content

🎮 Game API 浏览器客户端

这是一个基于Web Crypto API的生产级浏览器兼容API客户端,用于与游戏网关进行安全通信。

✨ 特性

  • 🔒 生产级安全: 使用Web Crypto API的HMAC-SHA256签名和crypto-js的HMAC-MD5签名
  • 🌐 浏览器原生: 纯浏览器环境运行,无需Node.js
  • 📦 ESM模块: 现代ES模块导出,支持import语法
  • 🎯 TypeScript友好: 完整的类型支持
  • 异步处理: 基于Promise的异步API
  • 🛡️ 错误处理: 完善的错误捕获和处理机制
  • 🔑 双重签名支持: 同时支持HMAC-SHA256和HMAC-MD5算法

🚀 快速开始

1. 导入模块

javascript
// ES模块导入
import GameAPIClient from './api.js';

// 或者命名导入
import { GameAPIClient } from './api.js';

2. 创建客户端实例

javascript
const config = {
    appKey: 'your-app-key',
    accessToken: 'user-access-token',
    appId: 'your-app-id',
    sessionId: 'user-session-id',
    uid: 'user-id',
    productId: 'product-id', // 可选,用于购买
    method: 'POST',
    host: 'game-gateway-test.lobah.net',
    zone: 'SA'
};

const client = new GameAPIClient(config);

3. 使用API

javascript
// 测试API连接
try {
    await client.test();
    console.log('API连接成功');
} catch (error) {
    console.error('API连接失败:', error);
}

// 获取用户资料
try {
    await client.getProfile();
    console.log('用户资料获取成功');
} catch (error) {
    console.error('获取用户资料失败:', error);
}

// 购买商品
try {
    await client.purchase();
    console.log('商品购买成功');
} catch (error) {
    console.error('购买失败:', error);
}

📋 API参考

GameAPIClient类

构造函数

typescript
new GameAPIClient(config: GameConfig)

方法

setConfig(appKey, accessToken, appId, sessionId, uid, productId)

设置API配置参数。

async test()

测试API连接状态。

async getProfile()

获取用户个人资料。

async purchase()

执行商品购买操作。

🔧 配置参数

参数名类型必填说明
appKeystring应用密钥
accessTokenstring用户访问令牌
appIdstring应用ID
sessionIdstring会话ID
uidstring用户ID
productIdstring商品ID(购买时使用)
methodstringHTTP方法,默认'POST'
hoststringAPI主机地址
zonestring区域代码

🔒 安全说明

  • 使用Web Crypto API进行HMAC-SHA256签名(推荐)
  • 使用crypto-js库进行HMAC-MD5签名(向后兼容)
  • 同时支持SHA256和MD5算法,可根据需求选择
  • 所有敏感数据都在客户端本地处理
  • 支持HTTPS安全连接
  • 实现了完整的请求签名验证机制
  • HMAC-MD5实现与Node.js crypto模块完全兼容

⚠️ 注意事项

  1. 跨域问题: 确保API服务器支持CORS跨域请求
  2. HTTPS要求: Web Crypto API要求页面必须在HTTPS环境下运行
  3. 浏览器兼容性: 需要现代浏览器支持Web Crypto API

🐛 错误处理

所有API方法都返回Promise,您应该使用try-catch来捕获可能的错误:

javascript
try {
    await client.test();
} catch (error) {
    // 错误处理
    console.error('API调用失败:', error.message);
}

📞 支持

如果您在使用过程中遇到问题,请检查:

  1. 网络连接是否正常
  2. API配置参数是否正确
  3. 浏览器控制台是否有错误信息
  4. API服务器是否支持CORS

📄 许可证

此代码仅供演示和学习使用。

Last updated:

Swipe & Play Endless Game Together