Skip to content

사용자

사용자 모듈은 현재 로그인한 플레이어의 정보와 Token을 가져오는 기능을 제공합니다. 게임에서 로그인 없이 모든 기능을 이용할 수 있다면 이 모듈을 사용할 필요가 없습니다. 그렇지 않으면 해당 모듈의 인터페이스를 호출하여 필요한 기능을 구현해야 합니다.

JOGOS_SDK 소개 페이지와 해당 게임 엔진 관련 부분을 읽은 후 다음과 같이 관련 기능을 사용할 수 있습니다:

javascript
window.JOGOS_SDK.user;

현재 사용자 정보 가져오기

다음 방법으로 현재 플레이어의 정보를 조회할 수 있습니다:

javascript
try {
  const user = await window.JOGOS_SDK.user.getUser();
  console.log('사용자 정보 조회 결과', user);
} catch (err) {
  // 예외 처리
  console.error(err);
}

현재 플레이어가 등록되지 않았거나 로그인하지 않은 경우, 시스템은 자동으로 로그인/등록 대화 상자를 열어 사용자에게 등록 또는 로그인을 요청합니다. 그렇지 않으면 401 인증되지 않음, 다시 로그인하십시오 예외가 반환됩니다.

현재 플레이어의 계정이 정지 또는 해지된 경우에도 해당 예외 정보가 반환됩니다.

성공적으로 반환된 플레이어 객체 구조는 다음과 같습니다:

typescript
// 사용자 정보
export interface UserInfo {
  // 사용자 ID
  userId: string;
  // 사용자 이름
  username: string;
  // 프로필 사진 URL
  profilePictureUrl: string;
  // 게임 ID
  gameId: number;
}

JOGOS_SDK의 사용자 이름은 6-20자이며 문자, 숫자, 마침표 및 밑줄을 포함할 수 있습니다.

주의: 단일 계정 멀티캐릭터 게임 안내

JOGOS_SDKUserId는 플레이어 계정과 일대일로 대응됩니다. 게임에서 여러 게임 캐릭터를 생성하거나 여러 서버 간 캐릭터 전환이 가능한 경우, 서버 측에서 이 로직을 처리하여 플레이어의 여러 캐릭터가 손실되거나 전환되지 않도록 해야 합니다.

사용자 토큰 가져오기 (게임 서버 통합 필요)

사용자 토큰에는 현재 로그인한 플레이어의 관련 정보가 포함되어 있습니다. 필요할 때 서버로 전송하고 검증/디코딩하여 관련 정보를 추출해야 합니다. 이는 사용자 계정 연동에 매우 유용합니다.

다음 방법으로 사용자 토큰을 조회할 수 있습니다:

javascript
try {
  const token = await window.JOGOS_SDK.user.getUserToken();
  console.log('토큰 조회 결과', token);
} catch (err) {
  // 예외 처리
  console.error(err);
}

토큰의 유효 기간은 1시간입니다. 토큰을 저장하지 말고 필요할 때마다 이 메서드를 호출하는 것을 권장합니다.

현재 플레이어가 등록되지 않았거나 로그인하지 않은 경우, 시스템은 자동으로 로그인/등록 대화 상자를 엽니다. 그렇지 않으면 401 인증되지 않음, 다시 로그인하십시오 예외가 반환됩니다.

플레이어 계정이 정지 또는 해지된 경우에도 해당 예외 정보가 반환됩니다.

반환된 토큰은 jwt.io에서 디코딩하고 테스트할 수 있습니다.

성공적으로 반환된 토큰 정보에는 다음 데이터가 포함됩니다:

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
}
클라이언트에서 토큰을 해독하지 마십시오
보안상의 이유로 클라이언트 측에서 사용자 토큰을 해독하지 않도록 주의하십시오.

서버에서 요청을 인증해야 할 때 토큰을 서버로 전송한 후 토큰을 디코딩하고 검증해야 합니다. 이 사용자 토큰 공개 키 를 사용하여 토큰을 검증할 수 있습니다. 키가 변경될 수 있으므로 토큰을 검증할 때마다 키를 가져오는 것을 권장합니다.

다음은 TypeScript와 공개 키를 사용하여 토큰을 디코딩하고 검증하는 예제입니다:

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 = `...`; // https://www.jogos.com/sdk/public-key.txt에서 가져오기
  const payload = jwt.verify(token, key, { algorithms: ['RS256'] });

  return payload as CrazyTokenPayload;
};

로컬 테스트

로컬 테스트 시 사용자 모듈 관련 인터페이스는 모의 데이터만 반환합니다.