Utente
Il modulo Utente fornisce la funzionalità per ottenere le informazioni e il Token
dell'utente già loggato. Se il gioco permette di utilizzare tutte le funzionalità senza effettuare il login, non è necessario utilizzare questo modulo; in caso contrario, è necessario chiamare le relative interfacce di questo modulo per implementare le funzionalità corrispondenti.
Dopo aver letto la sezione relativa al tuo motore di gioco nella pagina Introduzione a JOGOS_SDK
, puoi utilizzare le funzionalità correlate nel seguente modo:
window.JOGOS_SDK.user;
Ottenere le informazioni sull'utente corrente
Puoi utilizzare il seguente metodo per recuperare le informazioni sull'utente corrente:
try {
const user = await window.JOGOS_SDK.user.getUser();
console.log("Get user result", user);
} catch (err) {
// Gestire l'eccezione
console.error(err);
}
Se l'utente corrente non è registrato o non ha effettuato il login, il sistema aprirà automaticamente il dialogo di login/registrazione chiedendo all'utente di registrarsi o di effettuare il login con successo per continuare il gioco; in caso contrario, verrà restituito l'errore 401 Non autorizzato, effettua nuovamente il login
.
Se l'account dell'utente corrente è stato bloccato o cancellato, verranno restituiti anche i corrispondenti messaggi di errore.
La struttura dell'oggetto utente restituito con successo è la seguente:
// Informazioni sull'utente
export interface UserInfo {
// ID utente
userId: string;
// Nome utente
username: string;
// URL dell'avatar
profilePictureUrl: string;
// ID gioco
gameId: number;
}
Il nome utente di JOGOS_SDK
deve essere composto da 6-20 caratteri e può contenere lettere, numeri, punti e underscore.
Il UserId di JOGOS_SDK è in corrispondenza uno-a-uno con l'account dell'utente. Se il tuo gioco permette di creare più personaggi o di switchare tra personaggi su più server, il tuo server deve gestire questa logica per evitare la perdita o l'impossibilità di switchare tra i personaggi dell'utente.
Ottenere il token utente (necessario per il tuo server di gioco)
Il token utente contiene informazioni relative all'utente attualmente loggato. Dovresti inviarlo al tuo server quando necessario e verificarlo/decodificarlo al suo interno per estrarre le informazioni correlate, il che è utile per associare gli account utente.
Puoi utilizzare il seguente metodo per recuperare il token utente:
try {
const token = await window.JOGOS_SDK.user.getUserToken();
console.log("Get token result", token);
} catch (err) {
// Gestire l'eccezione
console.error(err);
}
La durata di vita del token è di 1 ora. Consigliamo di non memorizzare il Token e di chiamare sempre questo metodo quando hai bisogno del Token.
Se l'utente corrente non è registrato o non ha effettuato il login, il sistema aprirà automaticamente il dialogo di login/registrazione chiedendo all'utente di registrarsi o di effettuare il login con successo per continuare il gioco; in caso contrario, verrà restituito l'errore 401 Non autorizzato, effettua nuovamente il login
.
Se l'account dell'utente corrente è stato bloccato o cancellato, verranno restituiti anche i corrispondenti messaggi di errore.
Il token restituito può essere decodificato e testato su jwt.io.
Le informazioni del token restituito con successo contengono i seguenti dati:
{
"jti": "1899405772252258304",
"sub": "{\"profilePictureUrl\":\"a33bf366e34d48e984a094fc923d7b06.png\",\"gameId\":\"1\",\"profileDefaultAvatar\":\"default-avatar.png\",\"userId\":\"88E1B72FED537C6943C85C28F639BE0B\",\"username\":\"55895999999999999999\"}",
"iss": "com:jogos:sdk",
"iat": 1741688600,
"exp": 1745288600
}
Quando hai bisogno di utilizzare il server per autenticare le richieste, dovresti inviare il token al tuo server, quindi decodificarlo e verificarlo. Puoi utilizzare la chiave pubblica ospitata in questo Chiave pubblica per token utente
per verificare il token. Consigliamo di ottenere la chiave ogni volta che verifichi il token, poiché potrebbe cambiare.
Ecco un esempio di decodifica e verifica del token utilizzando TypeScript
e la chiave pubblica:
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 = `...`; // Ottenuto da https://www.jogos.com/sdk/public-key.txt
const payload = jwt.verify(token, key, { algorithms: ["RS256"] });
return payload as CrazyTokenPayload;
};
Test locale
Durante il test locale, le interfacce correlate del modulo utente restituiscono solo dati simulati.