登录功能
用户登录 minigameApi.login(options)
回调方式:
// 使用回调函数的用户登录
minigameApi.login({
success: function(result) {
console.log('登录成功:', result);
},
fail: function(error) {
console.log('登录失败:', error);
}
});
Promise 方式:
// 使用 Promise 的用户登录
minigameApi.login()
.then(result => {
console.log('登录成功:', result);
})
.catch(error => {
console.log('登录失败:', error);
});
// 或者使用 async/await
async function handleLogin() {
try {
const result = await minigameApi.login();
console.log('登录成功:', result);
} catch (error) {
console.log('登录失败:', error);
}
}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| success | Function | 否 | 登录成功回调函数 |
| fail | Function | 否 | 登录失败回调函数 |
注 意: 使用 Promise 方式时,可以省略 success 和 fail 回调函数,改用 .then() 和 .catch() 方法。
成功回调参数:
{
code: 0,
message: 'success',
data: {
jwtToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
expiresIn: 3600,
refreshToken: 'rt_xxxxxxxxxxxxxxxx'
}
}
失败回调参数:
{
code: -1,
message: '错误描述',
error: 'ERROR_CODE'
}
最佳实践:基于 Promise 的登录流程
// 现代化的 async/await 登录流程
class GameManager {
constructor() {
this.minigameApi = midas.minigame(config);
this.setupEventListeners();
}
async initializeGame() {
try {
// 等待 SDK 加载完成
await this.waitForSDKLoad();
// 尝试登录
const loginResult = await this.minigameApi.login();
console.log('用户已登录:', loginResult.data.jwtToken);
// 登录成功后显示游戏菜单
await this.minigameApi.showMenu({ gradually: true });
} catch (error) {
console.error('游戏初始化失败:', error);
this.handleInitError(error);
}
}
waitForSDKLoad() {
return new Promise((resolve) => {
this.minigameApi.on('sdk:loaded', resolve);
});
}
handleInitError(error) {
// 处理初始化错误
if (error.code === 'MODULE_NOT_LOADED') {
console.error('SDK 模块未正确加载');
}
}
}