Usuario
El módulo de Usuario proporciona la funcionalidad para obtener información y el Token
del jugador actualmente conectado. Si el juego permite acceder a todas las funciones sin necesidad de iniciar sesión, no es necesario usar este módulo; de lo contrario, debe llamar a las interfaces relacionadas de este módulo para implementar las funciones correspondientes.
Después de leer la sección relacionada con tu motor de juego en la página Introducción a JOGOS_SDK
, puedes utilizar las funciones relacionadas de la siguiente manera:
window.JOGOS_SDK.user;
Obtener información del usuario actual
Puedes usar el siguiente método para recuperar la información del jugador actual:
try {
const user = await window.JOGOS_SDK.user.getUser();
console.log('Get user result', user);
} catch (err) {
// Manejar la excepción
console.error(err);
}
Si el jugador actual no está registrado o no ha iniciado sesión, el sistema abrirá automáticamente el cuadro de diálogo de inicio de sesión/registro pidiendo al usuario que se registre o inicie sesión correctamente para continuar jugando; de lo contrario, devolverá la excepción 401 No autorizado, por favor inicia sesión nuevamente
.
Si la cuenta del jugador actual ha sido bloqueada o eliminada, también se devolverá la información de excepción correspondiente.
La estructura del objeto jugador devuelto con éxito es la siguiente:
// Información del usuario
export interface UserInfo {
// ID de usuario
userId: string;
// Nombre de usuario
username: string;
// URL de la foto de perfil
profilePictureUrl: string;
// ID del juego
gameId: number;
}
El nombre de usuario de JOGOS_SDK
tiene entre 6 y 20 caracteres y puede contener letras, números, puntos y guiones bajos.
El UserId de JOGOS_SDK está en correspondencia uno a uno con la cuenta del jugador; si tu juego permite crear múltiples personajes o cambiar entre personajes en múltiples servidores, tu servidor debe manejar esta lógica para evitar la pérdida o la inability to switch between multiple characters of the player.
Obtener token de usuario (necesario para la integración con tu servidor de juegos)
El token de usuario contiene información relacionada con el jugador actualmente conectado. Deberías enviarlo a tu servidor cuando sea necesario y verificar/decodificarlo allí para extraer la información relacionada, lo que es muy útil para asociar cuentas de usuario.
Puedes usar el siguiente método para recuperar el token de usuario:
try {
const token = await window.JOGOS_SDK.user.getUserToken();
console.log('Get token result', token);
} catch (err) {
// Manejar la excepción
console.error(err);
}
La vida útil del token es de 1 hora. Recomendamos no almacenar el Token y llamar siempre a este método cuando necesites el Token.
Si el jugador actual no está registrado o no ha iniciado sesión, el sistema abrirá automáticamente el cuadro de diálogo de inicio de sesión/registro pidiendo al usuario que se registre o inicie sesión correctamente para continuar jugando; de lo contrario, devolverá la excepción 401 No autorizado, por favor inicia sesión nuevamente
.
Si la cuenta del jugador actual ha sido bloqueada o eliminada, también se devolverá la información de excepción correspondiente.
El token devuelto puede decodificarse y probarse en jwt.io.
La información del token devuelta con éxito contiene los siguientes datos:
{
"jti": "1899405772252258304",
"sub": "{\"profilePictureUrl\":\"a33bf366e34d48e984a094fc923d7b06.png\",\"gameId\":\"1\",\"profileDefaultAvatar\":\"default-avatar.png\",\"userId\":\"88E1B72FED537C6943C85C28F639BE0B\",\"username\":\"55895999999999999999\"}",
"iss": "com:jogos:sdk",
"iat": 1741688600,
"exp": 1745288600
}
Cuando necesites usar el servidor para autenticar solicitudes, debes enviar el token a tu servidor, luego decodificar y verificar el token. Puedes usar la clave pública alojada en esta Clave pública del token de usuario
para verificar el token. Recomendamos obtener la clave cada vez que verifiques el token, ya que puede cambiar.
Aquí tienes un ejemplo de decodificación y verificación de token usando TypeScript
y la clave pública:
import * as jwt from 'jsonwebtoken';
export interface CrazyTokenPayload {
userId: string;
username: string;
gameId: string;
profilePictureUrl: string;
}
export const decodeUserToken = async (token: string): Promise<CrazyTokenPayload> => {
const publickKey = `...`; // Obtenido desde https://www.jogos.com/sdk/public-key.txt
const payload = jwt.verify(token, key, { algorithms: ['RS256'] });
return payload as CrazyTokenPayload;
};
Prueba local
Durante la prueba local, las interfaces relacionadas con el módulo de usuario solo devuelven datos simulados.