Guías
Verifica en tu servidor
Copiar página
Conozca qué jugador llama a su servidor. Envíe un token de sesión desde la página, verifíquelo con Lia una vez, luego mantenga su propia sesión.
Cualquiera puede enviarle a su servidor una solicitud que diga "I'jugador p_3f9c…". Así que la página envía un token de sesión que Lia firmó, y tu servidor pregunta a Lia de quién es.
#En su página
Envía el token con tu primera solicitud, o con cualquier cosa que importe. Los tokens duran 15 minutos; Lia.session() siempre da uno nuevo.
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();
}#En tu servidor
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 });
});Lo mismo en 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 });
},
};#Mantenga su propia sesión
Verificar cada solicitud funciona, pero es's un viaje redondo a Lia cada vez. Para una aplicación que habla mucho con su servidor, verifique una vez y luego use la suya propia:
- La página se registraEnvía la moneda desde
Lia.init()a/api/login. - Su servidor lo verifica con LiaObtiene el id del jugador, y establece su propia cookie o token para ese jugador.
- Todo lo demás usa el tuyoHasta que termine; luego la página envía una sesión Lia fresca para iniciar sesión nuevamente.
Cookies establecidas por tu página'su propio sitio funciona dentro de Lia'el marco como en la web (las cookies para otro sitio pueden ser bloqueadas por el teléfono, así que mantén tu API en el mismo sitio o envía un token en su lugar). Para un WebSocket, verifica el token en el primer mensaje (o la conexión'la cadena de consulta) antes de unirse al jugador a algo.
#Verificaciones que hacer
valides verdadero. Un token que'para otra aplicación, desde otro modo o pasado su final no'no válido.- El modo es el que esperas. Con tu clave en vivo, tú'solo verá sesiones en vivo, pero si su servidor guarda ambas claves, compruebe
mode. - Usar
playerIdde Lia, nunca uno que envíe la página. - Mantenga su clave en su servidor. Nunca lo envíes a la página, ni siquiera por un momento.
Traducido automáticamente. El inglés es la fuente de verdad. Leer en inglés