Skip to content

ユーザー

ユーザーモジュールは、現在のログイン済みプレイヤーの情報とTokenを取得する機能を提供します。ゲームがログインなしですべての機能を体験できる場合は、このモジュールを使用する必要はありません。それ以外の場合は、このモジュールの関連インターフェースを呼び出して対応する機能を実装する必要があります。

JOGOS_SDK の概要ページで自分のゲームエンジンに関連する部分を読んだ後、以下の方法で関連機能を使用できます:

javascript
window.JOGOS_SDK.user;

現在のユーザー情報を取得する

以下の方法を使用して、現在のプレイヤーの情報を取得できます:

javascript
try {
  const user = await window.JOGOS_SDK.user.getUser();
  console.log("Get user result", 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("Get token result", token);
} catch (err) {
  // 例外を処理する
  console.error(err);
}

トークンの有効期間は1時間です。Token を保存しないで、必要なときは常にこのメソッドを呼び出すことを推奨します。

現在のプレイヤーが登録されていないかログインしていない場合、システムは自動的にログイン/登録ダイアログを開き、ユーザーに登録または正常にログインするよう要求します。そうしないと、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;
};

ローカルテスト

ローカルテスト時、ユーザーモジュールの関連インターフェースは単に模擬データを返すだけです。