Skip to main content

Login Functions

User Login minigameApi.login(options)

Callback Style:

// User login with callbacks
minigameApi.login({
success: function(result) {
console.log('Login successful:', result);
},
fail: function(error) {
console.log('Login failed:', error);
}
});

Promise Style:

// User login with Promise
minigameApi.login()
.then(result => {
console.log('Login successful, jwtToken:', result.data.jwtToken);
})
.catch(error => {
console.log('Login failed:', error);
});

// Or using async/await
async function handleLogin() {
try {
const result = await minigameApi.login();
console.log('Login successful:', result);
} catch (error) {
console.log('Login failed:', error);
}
}

Parameter Description

ParameterTypeRequiredDescription
successFunctionNoLogin success callback function
failFunctionNoLogin failure callback function

Note: When using Promise style, you can omit the success and fail callbacks and use .then() and .catch() instead.

Success Callback Parameters:

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

Failure Callback Parameters:

{
code: -1,
message: 'Error description',
error: 'ERROR_CODE'
}

Best Practices: Promise-based Login Flow

// Modern async/await login flow
class GameManager {
constructor() {
this.minigameApi = midas.minigame(config);
this.setupEventListeners();
}

async initializeGame() {
try {
// Wait for SDK to load
await this.waitForSDKLoad();

// Attempt login
const loginResult = await this.minigameApi.login();
console.log('User logged in, jwtToken:', loginResult.data.jwtToken);

// Show game menu after successful login
await this.minigameApi.showMenu({ gradually: true });

} catch (error) {
console.error('Game initialization failed:', error);
this.handleInitError(error);
}
}

waitForSDKLoad() {
return new Promise((resolve) => {
this.minigameApi.on('sdk:loaded', resolve);
});
}

handleInitError(error) {
// Handle initialization errors
if (error.code === 'MODULE_NOT_LOADED') {
console.error('SDK modules not loaded properly');
}
}
}