Guides
Vérifiez sur votre serveur
Copier la page
Savoir quel joueur appelle votre serveur. Envoyez un jeton de session depuis la page, vérifiez-le avec Lia une fois, puis gardez votre propre session.
Quiconque peut envoyer à votre serveur une demande qui dit "I'joueur p_3f9c…". Ainsi, la page envoie un jeton de session que Lia a signé, et votre serveur demande Lia à qui il appartient.
#Dans votre page
Envoyez le jeton avec votre première demande, ou avec quoi que ce soit qui compte. Les jetons durent 15 minutes; Lia.session() donne toujours un nouveau.
export async function api(path, body) {
const { session } = await Lia.session();
const res = await fetch(path, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ...body, session }),
});
if (!res.ok) throw new Error((await res.json()).error);
return res.json();
}#Sur votre serveur
const LIA = "https://api.lialabs.org/api/apps/v1";
async function playerFrom(session) {
if (typeof session !== "string") return null;
const res = await fetch(`${LIA}/session/verify`, {
method: "POST",
headers: { Authorization: `Bearer ${process.env.LIA_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ session }),
});
if (!res.ok) throw new Error(`Lia answered ${res.status}`); // a 401 means your key is wrong
const result = await res.json();
return result.valid ? result.playerId : null;
}
app.post("/api/save", async (req, res) => {
const playerId = await playerFrom(req.body.session);
if (!playerId) return res.status(401).json({ error: "session" });
await db.save(playerId, req.body.progress);
res.json({ ok: true });
});La même chose dans un Cloudflare Worker :
export default {
async fetch(request, env) {
const body = await request.json();
const check = await fetch("https://api.lialabs.org/api/apps/v1/session/verify", {
method: "POST",
headers: { Authorization: `Bearer ${env.LIA_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ session: body.session }),
}).then((r) => r.json());
if (!check.valid) return Response.json({ error: "session" }, { status: 401 });
return Response.json({ hello: check.playerId });
},
};#Gardez votre propre session
Vérifier chaque demande fonctionne, mais il's un aller-retour à Lia chaque fois. Pour une application qui parle beaucoup à son serveur, vérifiez une fois et utilisez ensuite la vôtre :
- La page s'inscritIl envoie le jeton de
Lia.init()à/api/login. - Votre serveur le vérifie avec LiaIl obtient l'identifiant du joueur, et définit votre propre cookie ou token pour ce joueur.
- Tout après utilise le vôtreJusqu'à ce que cela se termine ; puis la page envoie une nouvelle session Lia pour vous connecter à nouveau.
Les cookies définis par votre page'son propre site fonctionne à l'intérieur de Lia'frame comme sur le web (les cookies pour un autre site peuvent être bloqués par le téléphone, donc gardez votre API sur le même site ou envoyez un jeton à la place). Pour un WebSocket, vérifiez le jeton dans le premier message (ou la connexion'sa chaîne de requête) avant de rejoindre le joueur à quoi que ce soit.
#Vérifications à effectuer
validest vrai. Un jeton qui'pour une autre application, depuis un autre mode ou après la fin de celle-ci n'valide.- Le mode est celui que vous attendez. Avec votre clé de production, vous'ne verront que des sessions en direct, mais si votre serveur garde les deux clés, vérifiez
mode. - Utiliser
playerIdde Lia, jamais un que la page envoie. - Gardez votre clé sur votre serveur. Ne jamais l'envoyer à la page, même pour un moment.
Traduit automatiquement. L'anglais est la source de vérité. Lire en anglais