LiaMga developer

Mga Gabay

Alam kung anong manlalaro ang tumatawag sa iyong server. Ipadala ang isang session token mula sa pahina, i-verify ito sa Lia isang beses, pagkatapos ay panatilihin ang iyong sariling session.

Makakatanggap ang iyong server ng isang kahilingan mula sa sinuman na nagsasabi "I'manlalarong p_3f9c…". Kaya ang page ay nagpapadala ng isang session token na Lia ay nag-sign, at ang iyong server hinihingi ang Lia kung sino ito.

#Sa iyong pahina

Ipadala ang token kasama ang unang kahilingan mo, o kasama ang anumang bagay na mahalaga. Ang mga token ay naglalabas ng 15 minuto; Lia.session() laging nagbibigay ng isang bagong isa.

api.js
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();
}

#Sa iyong server

server.js (Node.js)
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 });
});

Ang pareho sa isang Cloudflare Worker:

worker.js
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 });
  },
};

#Panatilihin ang iyong sariling session

Ang pag-verify ng bawat kahilingan ay gumagana, ngunit ito's isang round trip sa Lia bawat pagkakataon. Para sa isang app na nag-uusap sa kanyang server nang marami, i-verify ang isang beses at pagkatapos gamitin ang iyong sarili:

  1. Ang pahina ay nagsusulat ng pag-loginNagpapadala ng token mula Lia.init() sa /api/login.
  2. Ang iyong server ay kinokontrol ito sa pamamagitan ng LiaIto ay nakukuha ang player id, at itinatakda ang iyong sariling cookie o token para sa player na ito.
  3. Ang lahat ng susunod ay gamit moHanggang ito matapos; pagkatapos ay ang pahina nagpapadala ng isang bagong Lia sesyon para mag-log in ulit.

Mga cookie na itinakda ng iyong pahina's sariling site work sa loob ng Lia'ang frame ay tulad ng sa web (ang cookies para sa ibang site ay maaaring i-block ng telepono, kaya panatilihin ang iyong API sa parehong site o ipadala ang token sa halip). Para sa isang WebSocket, i-verify ang token sa unang mensahe (o ang koneksyon's query string) bago sumali sa manlalaro sa anumang bagay.

#Mga pagsusuri na dapat gawin

  • valid ay true. Isang token na'para sa ibang app, mula sa ibang mode o nasa huli na ito ay hindi'hindi valid.
  • Ang mode ay ang inaasahan mo. Gamit ang iyong live key mo'ay lamang makakakita ng mga live session, ngunit kung ang iyong server ay nagmamay-ari ng pareho ang mga pindutan, tingnan mode.
  • Gamitin playerId mula Lia, walang sinong binigyan ng pagkakataon: ang iyong server ay natututo kung sino ang sumali nang sila ay sumali.
  • Panatilihin ang iyong key sa iyong server. Huwag ipadala ito sa pahina, kahit isang sandali.

Awtomatikong isinalin. Ang English ay ang source of truth. Basahin sa Ingles

Pindutin para maghanap sa lahat ng pahina, paraan at endpoint.