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,並於每次需要 Token 時呼叫此方法。

若當前玩家尚未註冊或尚未登入,系統將自動開啟登入/註冊對話方塊,要求使用者完成註冊或登入後方可繼續遊戲,否則將回傳 401 未授權,請重新登入 異常。

若當前玩家的帳號已被凍結或註銷,亦將回傳對應的異常資訊。

回傳的令牌可於 jwt.io 進行解碼與測試。

成功回傳的令牌資訊包含以下 Json 資料:

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
}
不在客戶端上解密令牌
請勿於客戶端解密使用者令牌,此行為不安全,必須由您的伺服器進行接入。

當您需要使用伺服器對請求進行身份驗證時,應將令牌傳送至您的伺服器,然後對令牌進行解碼與驗證,可使用此使用者令牌公鑰 https://www.jogos.com/publicKey.json 驗證令牌。建議您於每次驗證令牌時皆取得金鑰,因其可能變更。

下一步驗證,由伺服器接入

伺服器相關 API,請參閱:伺服端接入介面 頁面。

本地測試

本地測試時,使用者模組的相關介面僅回傳模擬資料。