跳到主要内容

Midasbuy 小游戏登录 SDK 协议

概述

minigame-login SDK 是 MidasBuy 为小游戏开发者提供的登录认证解决方案,通过前端 SDK 封装,简化游戏接入流程,减少后台对接成本。

主要流程

SDK 接口规范

1. 初始化

1.1 引入 SDK

<script src="https://cdn.midasbuy.com/js/minigame-login.stable.js"></script>

建设中

1.2 初始化配置

MidasbuyLogin.init({
appId: '146000xxx', // MidasBuy分配的应用ID
environment: 'production', // 环境: 'production' | 'sandbox'
debug: false, // 是否开启调试模式
timeout: 30000 // 请求超时时间(毫秒)
});

参数说明:

参数类型必填说明
appIdStringMidasBuy分配的应用ID
environmentString环境配置,默认'production'
debugBoolean调试模式,默认false
timeoutNumber超时时间,默认30000ms

2. 登录接口

2.1 login 方法

MidasbuyLogin.login({
success: function(result) {
// 登录成功回调
console.log('登录成功:', result);
},
fail: function(error) {
// 登录失败回调
console.log('登录失败:', error);
}
});

参数说明:

参数类型必填说明
successFunction登录成功回调函数
failFunction登录失败回调函数

成功回调参数:

{
code: 0,
message: 'success',
data: {
jwtToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
expiresIn: 3600,
refreshToken: 'rt_xxxxxxxxxxxxxxxx'
}
}

失败回调参数:

{
code: -1,
message: '错误描述',
error: 'ERROR_CODE'
}

2.2 Promise 方式调用

try {
const result = await MidasbuyLogin.login();
console.log('登录成功:', result);
} catch (error) {
console.log('登录失败:', error);
}

3. Token 管理

3.1 获取当前 Token

const currentToken = MidasbuyLogin.getToken();
console.log('当前JWT Token:', currentToken);

3.2 刷新 Token

MidasbuyLogin.refreshToken({
refreshToken: 'rt_xxxxxxxxxxxxxxxx',
success: function(result) {
console.log('Token刷新成功:', result);
},
fail: function(error) {
console.log('Token刷新失败:', error);
}
});

3.3 清除 Token

MidasbuyLogin.clearToken();

4. 用户信息

4.1 获取用户信息

const userInfo = MidasbuyLogin.getUserInfo();
console.log('用户信息:', userInfo);

4.2 检查登录状态

const isLoggedIn = MidasbuyLogin.isLoggedIn();
console.log('是否已登录:', isLoggedIn);

5. 事件监听

5.1 监听登录状态变化

MidasbuyLogin.on('loginStatusChanged', function(status) {
console.log('登录状态变化:', status);
// status: 'logged_in' | 'logged_out' | 'token_expired'
});

5.2 监听 Token 过期

MidasbuyLogin.on('tokenExpired', function() {
console.log('Token已过期,需要重新登录');
// 自动刷新或提示用户重新登录
});

5.3 移除事件监听

MidasbuyLogin.off('loginStatusChanged');
MidasbuyLogin.off('tokenExpired');

错误码规范

客户端错误码

错误码错误信息说明
-1UNKNOWN_ERROR未知错误
-2INVALID_PARAMS参数错误
-3NETWORK_ERROR网络错误
-4TIMEOUT_ERROR请求超时
-5TOKEN_INVALIDToken无效
-6TOKEN_EXPIREDToken已过期
-7GAME_SERVER_ERROR游戏服务器错误
-8USER_CANCELLED用户取消操作

服务端错误码

错误码错误信息说明
1001INVALID_GAME_TOKENGameToken无效
1002GAME_TOKEN_EXPIREDGameToken已过期
1003INVALID_OFFER_ID商品ID无效
1004INVALID_GAME_SERVER_URL游戏服务器地址无效
1005JWT_GENERATION_FAILEDJWT生成失败
1006RATE_LIMIT_EXCEEDED请求频率超限

安全特性

1. JWT Token 结构

// Header
{
"alg": "HS256",
"typ": "JWT"
}

// Payload
{
"openid": "test_id_1", // 用户OpenID
"user_name": "test_1", // 用户名
"avatar": "https://avatar.url", // 用户头像
"sub": "12345", // 用户ID
"iss": "midasbuy", // 签发者
"aud": "146000xxx", // 接收方(appId)
"exp": 1642150800, // 过期时间
"iat": 1642147200, // 签发时间
"jti": "unique-token-id", // Token唯一标识
}

2. 安全措施

  • Token 有效期: JWT Token 有效期为1小时
  • 刷新机制: 提供 RefreshToken 用于无感刷新
  • 域名绑定: Token 与特定 appId 绑定
  • 防重放: 每次请求包含 timestamp 和 nonce
  • HTTPS 传输: 所有接口必须使用 HTTPS

注意事项

  1. HTTPS 必须: 生产环境必须使用 HTTPS
  2. Token 安全: 不要在客户端存储敏感信息
  3. 错误处理: 完善的错误处理和用户提示
  4. 性能优化: 合理使用缓存,避免频繁请求
  5. 兼容性: 支持主流浏览器和移动端