🎮 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()
执行商品购买操作。
🔧 配置参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| appKey | string | ✅ | 应用密钥 |
| accessToken | string | ✅ | 用户访问令牌 |
| appId | string | ✅ | 应用ID |
| sessionId | string | ✅ | 会话ID |
| uid | string | ✅ | 用户ID |
| productId | string | ❌ | 商品ID(购买时使用) |
| method | string | ✅ | HTTP方法,默认'POST' |
| host | string | ✅ | API主机地址 |
| zone | string | ✅ | 区域代码 |
🔒 安全说明
- 使用Web Crypto API进行HMAC-SHA256签名(推荐)
- 使用crypto-js库进行HMAC-MD5签名(向后兼容)
- 同时支持SHA256和MD5算法,可根据需求选择
- 所有敏感数据都在客户端本地处理
- 支持HTTPS安全连接
- 实现了完整的请求签名验证机制
- HMAC-MD5实现与Node.js crypto模块完全兼容
⚠️ 注意事项
- 跨域问题: 确保API服务器支持CORS跨域请求
- HTTPS要求: Web Crypto API要求页面必须在HTTPS环境下运行
- 浏览器兼容性: 需要现代浏览器支持Web Crypto API
🐛 错误处理
所有API方法都返回Promise,您应该使用try-catch来捕获可能的错误:
javascript
try {
await client.test();
} catch (error) {
// 错误处理
console.error('API调用失败:', error.message);
}📞 支持
如果您在使用过程中遇到问题,请检查:
- 网络连接是否正常
- API配置参数是否正确
- 浏览器控制台是否有错误信息
- API服务器是否支持CORS
📄 许可证
此代码仅供演示和学习使用。