Usuário
O módulo de usuário oferece a funcionalidade de obter informações do jogador logado atual e o Token
. Se o jogo permitir que todos os recursos sejam experienciados sem login, não é necessário usar este módulo; caso contrário, é necessário chamar as interfaces relacionadas a este módulo para implementar as funcionalidades correspondentes.
Após ler a seção relacionada ao seu motor de jogo na página Introdução ao JOGOS_SDK
, você pode usar as funcionalidades relacionadas da seguinte maneira:
window.JOGOS_SDK.user;
Obter informações do usuário atual
Você pode usar o seguinte método para recuperar as informações do jogador atual:
try {
const user = await window.JOGOS_SDK.user.getUser();
console.log('Get user result', user);
} catch (err) {
// Tratar exceção
console.error(err);
}
Se o jogador atual não estiver registrado ou logado, o sistema abrirá automaticamente um diálogo de login/registro, solicitando que o usuário se registre ou faça login com sucesso para continuar o jogo; caso contrário, retornará uma exceção 401 Não autorizado, por favor faça login novamente
.
Se a conta do jogador atual estiver suspensa ou cancelada, também retornará informações de exceção correspondentes.
A estrutura do objeto de jogador retornado com sucesso é a seguinte:
// Informações do usuário
export interface UserInfo {
// ID do usuário
userId: string;
// Nome de usuário
username: string;
// URL da foto de perfil
profilePictureUrl: string;
// ID do jogo
gameId: number;
}
O nome de usuário do JOGOS_SDK
tem 6-20 caracteres e pode conter letras, números, pontos e sublinhados.
O UserId do JOGOS_SDK está em correspondência um-para-um com a conta do jogador; se o seu jogo permitir a criação de múltiplos personagens ou a troca de personagens em vários servidores, é necessário que o seu servidor trate essa lógica para evitar a perda ou a impossibilidade de troca de múltiplos personagens do jogador.
Obter token do usuário (necessário para integração com o servidor do seu jogo)
O token do usuário contém informações relacionadas ao jogador logado atual. Você deve enviá-lo ao seu servidor quando necessário e verificá-lo/decodificá-lo lá para extrair informações relevantes, o que é muito útil para associar contas de usuário.
Você pode usar o seguinte método para recuperar o token do usuário:
try {
const token = await window.JOGOS_SDK.user.getUserToken();
console.log('Get token result', token);
} catch (err) {
// Tratar exceção
console.error(err);
}
A duração do token é de 1 hora. Recomendamos que você não armazene o Token e sempre chame este método quando precisar do Token.
Se o jogador atual não estiver registrado ou logado, o sistema abrirá automaticamente um diálogo de login/registro, solicitando que o usuário se registre ou faça login com sucesso para continuar o jogo; caso contrário, retornará uma exceção 401 Não autorizado, por favor faça login novamente
.
Se a conta do jogador atual estiver suspensa ou cancelada, também retornará informações de exceção correspondentes.
O token retornado pode ser decodificado e testado em jwt.io.
As informações do token retornado com sucesso contêm os seguintes dados:
{
"jti": "1899405772252258304",
"sub": "{\"profilePictureUrl\":\"a33bf366e34d48e984a094fc923d7b06.png\",\"gameId\":\"1\",\"profileDefaultAvatar\":\"default-avatar.png\",\"userId\":\"88E1B72FED537C6943C85C28F639BE0B\",\"username\":\"55895999999999999999\"}",
"iss": "com:jogos:sdk",
"iat": 1741688600,
"exp": 1745288600
}
Quando precisar usar o servidor para autenticar solicitações, você deve enviar o token ao seu servidor, depois decodificá-lo e verificá-lo. Pode usar esta Chave pública do token do usuário
chave pública hospedada para verificar o token. Recomendamos que você obtenha a chave sempre que verificar o token, pois ela pode mudar.
Abaixo está um exemplo de decodificação e verificação de token usando TypeScript
e chave 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 = `...`; // Obtido em https://www.jogos.com/sdk/public-key.txt
const payload = jwt.verify(token, key, { algorithms: ['RS256'] });
return payload as CrazyTokenPayload;
};
Teste local
No teste local, as interfaces relacionadas ao módulo de usuário apenas retornam dados simulados.