Skip to content

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:

javascript
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:

javascript
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:

typescript
// 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.

Aviso: Mensagem de aviso para jogos com múltiplos personagens em uma única conta

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:

javascript
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:

json
{
  "jti": "1899405772252258304",
  "sub": "{\"profilePictureUrl\":\"a33bf366e34d48e984a094fc923d7b06.png\",\"gameId\":\"1\",\"profileDefaultAvatar\":\"default-avatar.png\",\"userId\":\"88E1B72FED537C6943C85C28F639BE0B\",\"username\":\"55895999999999999999\"}",
  "iss": "com:jogos:sdk",
  "iat": 1741688600,
  "exp": 1745288600
}
Não decodifique o token no cliente
Certifique-se de não decodificar o token do usuário no cliente, pois isso não é seguro.

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:

typescript
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.