Người dùng
Mô-đun Người dùng cung cấp chức năng lấy thông tin và Token
của người chơi đã đăng nhập hiện tại. Nếu trò chơi có thể trải nghiệm tất cả các chức năng mà không cần đăng nhập, thì không cần sử dụng mô-đun này, ngược lại cần gọi các giao diện liên quan của mô-đun này để thực hiện các chức năng tương ứng.
Sau khi đọc phần liên quan đến công cụ tạo trò chơi của bạn trên trang Giới thiệu JOGOS_SDK
, bạn có thể sử dụng các chức năng liên quan theo cách sau:
window.JOGOS_SDK.user;
Lấy thông tin người dùng hiện tại
Bạn có thể sử dụng phương pháp sau để truy xuất thông tin của người chơi hiện tại:
try {
const user = await window.JOGOS_SDK.user.getUser();
console.log("Get user result", user);
} catch (err) {
// Xử lý ngoại lệ
console.error(err);
}
Nếu người chơi hiện tại chưa đăng ký hoặc chưa đăng nhập, hệ thống sẽ tự động mở hộp thoại đăng nhập/đăng ký yêu cầu người dùng đăng ký hoặc đăng nhập thành công để tiếp tục chơi, ngược lại sẽ trả về ngoại lệ 401 Không được phép, vui lòng đăng nhập lại
.
Nếu tài khoản của người chơi hiện tại đã bị khóa hoặc hủy, cũng sẽ trả về thông tin ngoại lệ tương ứng.
Cấu trúc đối tượng người chơi trả về thành công như sau:
// Thông tin người dùng
export interface UserInfo {
// Mã người dùng
userId: string;
// Tên người dùng
username: string;
// URL ảnh đại diện
profilePictureUrl: string;
// Mã trò chơi
gameId: number;
}
Tên người dùng của JOGOS_SDK
có độ dài 6-20 ký tự, có thể bao gồm chữ cái, số, dấu chấm và dấu gạch dưới.
UserId của JOGOS_SDK tương ứng một-một với tài khoản người chơi; nếu trò chơi của bạn có thể tạo nhiều nhân vật hoặc có nhiều máy chủ để chuyển đổi nhân vật, cần máy chủ của bạn xử lý logic này để tránh mất mát hoặc không thể chuyển đổi nhiều nhân vật của người chơi.
Lấy mã thông báo người dùng (cần được tích hợp bởi máy chủ trò chơi của bạn)
Mã thông báo người dùng chứa thông tin liên quan đến người chơi đã đăng nhập hiện tại. Bạn nên gửi nó đến máy chủ của mình khi cần và xác thực/giải mã nó ở đó để trích xuất thông tin liên quan, điều này rất hữu ích để liên kết các tài khoản người dùng.
Bạn có thể sử dụng phương pháp sau để truy xuất mã thông báo người dùng:
try {
const token = await window.JOGOS_SDK.user.getUserToken();
console.log("Get token result", token);
} catch (err) {
// Xử lý ngoại lệ
console.error(err);
}
Thời gian tồn tại của mã thông báo là 1 giờ. Chúng tôi khuyến nghị bạn không lưu trữ Token và luôn gọi phương pháp này khi cần Token.
Nếu người chơi hiện tại chưa đăng ký hoặc chưa đăng nhập, hệ thống sẽ tự động mở hộp thoại đăng nhập/đăng ký yêu cầu người dùng đăng ký hoặc đăng nhập thành công để tiếp tục chơi, ngược lại sẽ trả về ngoại lệ 401 Không được phép, vui lòng đăng nhập lại
.
Nếu tài khoản của người chơi hiện tại đã bị khóa hoặc hủy, cũng sẽ trả về thông tin ngoại lệ tương ứng.
Mã thông báo trả về có thể được giải mã và kiểm tra trên jwt.io.
Thông tin mã thông báo trả về thành công bao gồm dữ liệu sau:
{
"jti": "1899405772252258304",
"sub": "{\"profilePictureUrl\":\"a33bf366e34d48e984a094fc923d7b06.png\",\"gameId\":\"1\",\"profileDefaultAvatar\":\"default-avatar.png\",\"userId\":\"88E1B72FED537C6943C85C28F639BE0B\",\"username\":\"55895999999999999999\"}",
"iss": "com:jogos:sdk",
"iat": 1741688600,
"exp": 1745288600
}
Khi bạn cần sử dụng máy chủ để xác thực yêu cầu, bạn nên gửi mã thông báo đến máy chủ của mình, sau đó giải mã và xác thực mã thông báo, có thể sử dụng khóa công khai được lưu trữ trong Khóa công khai mã thông báo người dùng này để xác thực mã thông báo. Chúng tôi khuyến nghị bạn lấy khóa mỗi khi xác thực mã thông báo, vì nó có thể thay đổi.
Dưới đây là một ví dụ sử dụng TypeScript
và khóa công khai để giải mã và xác thực mã thông báo:
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 = `...`; // Lấy từ https://www.jogos.com/sdk/public-key.txt
const payload = jwt.verify(token, key, { algorithms: ["RS256"] });
return payload as CrazyTokenPayload;
};
Kiểm tra cục bộ
Khi kiểm tra cục bộ, các giao diện liên quan của mô-đun người dùng chỉ trả về dữ liệu mô phỏng.