ผู้ใช้
โมดูลผู้ใช้ให้ความสามารถในการรับข้อมูลและ Token
ของผู้เล่นที่เข้าสู่ระบบแล้ว หากเกมไม่จำเป็นต้องเข้าสู่ระบบเพื่อใช้ฟีเจอร์ทั้งหมด ก็ไม่จำเป็นต้องใช้โมดูลนี้ แต่หากจำเป็นต้องใช้ ต้องเรียกใช้ API ที่เกี่ยวข้องของโมดูลนี้เพื่อใช้งานฟีเจอร์ต่างๆ
หลังจากอ่านหน้าJOGOS_SDK 简介
และส่วนที่เกี่ยวข้องกับเกมเอนจินของคุณแล้ว สามารถใช้งานฟีเจอร์ต่างๆ ดังนี้:
window.JOGOS_SDK.user;
รับข้อมูลผู้ใช้ปัจจุบัน
คุณสามารถใช้เมธอดต่อไปนี้เพื่อรับข้อมูลผู้เล่นปัจจุบัน:
try {
const user = await window.JOGOS_SDK.user.getUser();
console.log('Get user result', user);
} catch (err) {
// จัดการข้อผิดพลาด
console.error(err);
}
หากผู้เล่นปัจจุบันยังไม่ได้ลงทะเบียนหรือเข้าสู่ระบบ ระบบจะเปิดหน้าต่างเข้าสู่ระบบ/ลงทะเบียนโดยอัตโนมัติ และผู้ใช้ต้องลงทะเบียนหรือเข้าสู่ระบบสำเร็จก่อนจึงจะเล่นเกมต่อได้ มิฉะนั้นจะได้รับข้อผิดพลาด 401 未授权,请重新登录
(401 ไม่ได้รับอนุญาต โปรดเข้าสู่ระบบใหม่)
หากบัญชีของผู้เล่นปัจจุบันถูกระงับหรือยกเลิก ก็จะได้รับข้อความผิดพลาดที่เกี่ยวข้องเช่นกัน
โครงสร้างข้อมูลผู้เล่นที่ส่งกลับมาหากสำเร็จมีดังนี้:
// ข้อมูลผู้ใช้
export interface UserInfo {
// รหัสผู้ใช้
userId: string;
// ชื่อผู้ใช้
username: string;
// URL รูปโปรไฟล์
profilePictureUrl: string;
// รหัสเกม
gameId: number;
}
ชื่อผู้ใช้ของ JOGOS_SDK
มีความยาว 6-20 ตัวอักษร สามารถประกอบด้วยตัวอักษร ตัวเลข จุด และขีดล่าง
JOGOS_SDK 的 UserId จะสัมพันธ์กับบัญชีผู้ใช้แบบหนึ่งต่อหนึ่ง หากเกมของคุณอนุญาตให้สร้างตัวละครหลายตัวหรือมีเซิร์ฟเวอร์หลายตัวสำหรับสลับตัวละคร เซิร์ฟเวอร์ของคุณต้องจัดการลอจิกนี้ เพื่อป้องกันไม่ให้ผู้เล่นสูญเสียตัวละครหลายตัวหรือไม่สามารถสลับตัวละครได้
รับโทเคนผู้ใช้ (สำหรับเซิร์ฟเวอร์เกมของคุณ)
โทเคนผู้ใช้มีข้อมูลที่เกี่ยวข้องกับผู้เล่นที่เข้าสู่ระบบปัจจุบัน คุณควรส่งโทเคนนี้ไปยังเซิร์ฟเวอร์ของคุณเมื่อจำเป็น และตรวจสอบ/ถอดรหัสเพื่อดึงข้อมูลที่เกี่ยวข้อง ซึ่งมีประโยชน์สำหรับการเชื่อมโยงบัญชีผู้ใช้
คุณสามารถใช้เมธอดต่อไปนี้เพื่อรับโทเคนผู้ใช้:
try {
const token = await window.JOGOS_SDK.user.getUserToken();
console.log('Get token result', token);
} catch (err) {
// จัดการข้อผิดพลาด
console.error(err);
}
โทเคนมีอายุการใช้งาน 1 ชั่วโมง เราแนะนำไม่ให้เก็บโทเคนไว้ และควรเรียกใช้เมธอดนี้ทุกครั้งที่ต้องการโทเคน
หากผู้เล่นปัจจุบันยังไม่ได้ลงทะเบียนหรือเข้าสู่ระบบ ระบบจะเปิดหน้าต่างเข้าสู่ระบบ/ลงทะเบียนโดยอัตโนมัติ และผู้ใช้ต้องลงทะเบียนหรือเข้าสู่ระบบสำเร็จก่อนจึงจะเล่นเกมต่อได้ มิฉะนั้นจะได้รับข้อผิดพลาด 401 未授权,请重新登录
(401 ไม่ได้รับอนุญาต โปรดเข้าสู่ระบบใหม่)
หากบัญชีของผู้เล่นปัจจุบันถูกระงับหรือยกเลิก ก็จะได้รับข้อความผิดพลาดที่เกี่ยวข้องเช่นกัน
โทเคนที่ส่งกลับมาสามารถถอดรหัสและทดสอบได้ที่ jwt.io
ข้อมูลโทเคนที่ส่งกลับมาหากสำเร็จประกอบด้วยข้อมูลต่อไปนี้:
{
"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
และคีย์สาธารณะ:
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;
};
การทดสอบในเครื่อง
เมื่อทดสอบในเครื่อง API ที่เกี่ยวข้องกับโมดูลผู้ใช้จะส่งกลับเพียงข้อมูลจำลองเท่านั้น