Liaالمطورون

الدروس

اعرف أي لاعب يُرسل طلبًا إلى خادمك. أرسل رمز جلسة من الصفحة، وتحقق منه مع Lia مرة واحدة، ثم احتفظ بجلستك الخاصة.

يمكن لأي شخص إرسال طلب إلى خادمك يقول "I'اللاعب p_3f9c…". إذن الصفحة ترسل رمز الجلسة الذي قام Lia بتوقيعه، ويطلب منك خادمك Lia من يملكه.

#في صفحتك

أرسل الرمز مع طلبك الأول، أو مع أي شيء مهم. تستمر الرموز لمدة 15 دقائق; Lia.session() يُعطي دائمًا واحدًا جديدًا.

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

#على خادمك

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

نفس الشيء في عامل Cloudflare:

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

#احتفظ بجلستك الخاصة

التحقق من كل طلب يعمل، لكنه'س رحلة ذهاب وعودة إلى Lia كل مرة. بالنسبة لتطبيق يتحدث إلى خادمه كثيرًا، تحقق مرة واحدة ثم استخدم الخاصة بك:

  1. الصفحة تسجل الدخوليُرسل الرمز من Lia.init() لتغيير من يُحدّد وكيف، و /api/login.
  2. يتحقق خادمك من ذلك باستخدام Liaيحصل على معرف اللاعب، ويحدد ملف تعريف الارتباط أو الرمز الخاص بك لهذا اللاعب.
  3. كل شيء بعد ذلك يعتمد على حسابكحتى ينتهي؛ ثم ترسل الصفحة جلسة Lia جديدة لتسجيل الدخول مرة أخرى.

الكعكات التي تضعها صفحتك'عمل موقعه الخاص داخل Lia'إطاره كما على الويب (قد تمنع الهاتف ملفات تعريف الارتباط لموقع آخر، لذا احتفظ بـ API على نفس الموقع أو أرسل رمزًا بدلًا من ذلك). بالنسبة لـ WebSocket، تحقق من الرمز في الرسالة الأولى (أو الاتصال'سلسلة الاستعلام) قبل الانضمام إلى اللاعب بأي شيء.

#التحقق الذي يجب إجراؤه

  • valid هو صحيح. رمز ي'لتطبيق آخر، من الوضع الآخر أو بعد انتهائه'غير صالح.
  • الوضع هو الذي تتوقعه. مع مفتاحك الحي، أنت'سوف ترى فقط جلسات حية، ولكن إذا كان خادمك يحتفظ بالمفتاحين، تحقق من mode.
  • استخدم playerId من Lia, أبداً لا يكون ذلك ما ترسله الصفحة.
  • احتفظ بمفتاحك على خادمك. لا ترسله إلى الصفحة، حتى لحظة واحدة.

تم الترجمة تلقائيًا. الإنجليزية هي مصدر الحقيقة. اقرأ باللغة الإنجليزية

اكتب للبحث في كل صفحة، وطريقة ونقطة نهاية.