LiaDesenvolvedores

Guias

Saiba qual jogador está chamando seu servidor. Envie um token de sessão da página, verifique-o com Lia uma vez, depois mantenha sua própria sessão.

Qualquer pessoa pode enviar um pedido ao seu servidor que diz "I'jogador p_3f9c…". Então o página envia um token de sessão que Lia assinou, e seu servidor pergunta Lia de quem é.

#Na sua página

Envie o token com sua primeira solicitação, ou com qualquer coisa que importe. Tokens duram 15 minutos; Lia.session() sempre fornece um novo.

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

#No seu servidor

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 });
});

O mesmo em um 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 });
  },
};

#Mantenha sua própria sessão

Verificando cada solicitação funciona, mas ele'é uma viagem de ida e volta para Lia a cada vez. Para um app que fala muito com seu servidor, verifique uma vez e depois use o seu próprio:

  1. A página faz loginEle envia o token de Lia.init() para /api/login.
  2. Seu servidor verifica com LiaEle obtém o ID do jogador e define seu próprio cookie ou token para esse jogador.
  3. Tudo depois usa o seuAté que termine; então a página envia uma nova sessão Lia para fazer login novamente.

Cookies definidos pela sua página'seu próprio site funciona dentro de Lia'frame como na web (cookies de outro site podem ser bloqueados pelo telefone, então mantenha seu API no mesmo site ou envie um token em vez disso). Para um WebSocket, verifique o token na primeira mensagem (ou na conexão'sua string de consulta) antes de juntar-se ao jogador a algo.

#Verificações a fazer

  • valid é verdadeiro. Um token que'para outro app, a partir do outro modo ou depois do seu fim não'para válido.
  • O modo é o que você espera. Com sua chave ativa, você'só verá sessões ao vivo, mas se o seu servidor mantém ambas as chaves, verifique mode.
  • Use playerId de Lia, nunca uma que a página envia.
  • Mantenha sua chave no seu servidor. Nunca o envie para a página, mesmo que por um momento.

Traduzido automaticamente. O inglês é a fonte de verdade. Leia em inglês

Digite para pesquisar todas as páginas, métodos e endpoints.