伺服器套件
這頁係對英文翻譯過來个。若係兩片無共樣,以英文頁為準。 看英文頁
你个伺服器係嵌入肚保管密鑰个該一半。伺服器套件包等你所用語言个 Lingara 函式庫,所以佢會用你个 OAuth 用戶端登入,為你个玩家簽發權杖,檢查 Lingara 送分你个 webhook,再在玩家離開个時節將佢兜刪除。下背个範例在每種語言肚都行共樣个步驟。
建立一隻計量用戶端
在控制台建立一隻 OAuth 用戶端,再將佢設做計量方案。分佢 embed:mint,這係簽發權杖摎刪除玩家个權限範圍。其他方案个用戶端會分人拒絕這隻權限範圍。也愛分佢你想愛分玩家權杖帶个每隻權限範圍,因為權杖淨做得有你个用戶端有个權限範圍。embed:mint 本身永遠毋會交分玩家。
將用戶端个 ID 摎密鑰放在你伺服器个環境肚,永遠毋好放在遊戲抑係網頁肚。
註冊你个網頁來源
網站小工具需要一隻綁在網頁來源个權杖。在控制台你用戶端个設定肚,列出你个小工具行个每隻來源,像 https://www.example.com。最多做得列 10 隻。一隻來源係一隻協定、一隻主機摎一隻選填个連接埠,無路徑。開發个時節,也允許你自家連接埠頂高个 loopback 來源,像 http://localhost:5173。權杖淨從佢簽發時个該隻來源正會分人接受,所以為其他來源簽發个權杖會分 API 拒絕。遊戲毋使來源。
簽發權杖
在你自家个登入後背簽發:你个權杖路由先檢查你自家个工作階段,確定以後正為該隻玩家簽發。將路由照工作階段限速。簽發請求有三隻欄位:
player_ref:你自家對這隻玩家个參照,1 到 128 位元組个 UTF-8。Lingara 淨儲存佢个雜湊。
scopes:最多 5 隻,從玩家權杖做得有个權限範圍肚揀:events:read、events:write、lesson_plans:read、lesson_plans:write 摎 embed:play。若係無提供,權杖就會有你个用戶端所有个這兜權限範圍。
origin:網站用个時節,係網頁个來源,一定愛係你註冊過个。遊戲用个時節就毋好提供。
回應肚有 token、expires_at、expires_in(用秒算个同一隻到期時間,分你無辦法相信佢時鐘个裝置用)、subject、權杖个 scopes,還有 account_linked,表示玩家有無連結佢自家个 Lingara 帳戶。subject 係玩家在你个用戶端這位个識別,關係到佢个每隻事件都會帶這隻值。
照套件交接輸出寫个樣,將權杖摎佢个到期時間原封不動交分玩家,透過你自家个工作階段,永遠毋係放在 URL 肚,再用 Cache-Control: no-store 送出回應。權杖快到期个時節,玩家套件會再來問;權杖永遠毋會更新。
將 webhook 轉送到佢个玩家
Lingara 會為送分你个每隻 webhook 簽名。將原始个請求內容交分套件,愛在任何 JSON 解析以前,因為簽名涵蓋佢个位元組。套件會檢查簽名,再在你自家个一隻表肚尋事件个 subject 指个玩家;這隻表放在你个玩家側邊,將每隻 subject 對應到你个 player_ref。連結帳戶个玩家會有兩隻 subject,所以 subject 欄愛保持唯一,分一隻 player_ref 做得出現兩擺。
傳送至少一擺:已經處理過个事件 ID 就跳過。愛在 10 秒內回應,較慢个工作放入你自家个佇列。
刪除玩家
在你自家个帳戶刪除流程肚,用玩家个 player_ref 將佢刪除。Lingara 會撤銷玩家所有个權杖,再移除為佢儲存个所有東西。刪除一隻毋識个玩家也會成功,所以這隻呼叫重複做也安全。刪除你自家个資料還係你个責任。
帶佢自家 Lingara 帳戶來个玩家
有自家 Lingara 帳戶个玩家做得將佢連結起來,恁樣佢个練習摎計畫就放在該隻帳戶。這下還無套件包這隻功能;這係從你个伺服器發出个兩隻 API 呼叫。
你个伺服器用簽發權杖个同一隻用戶端,透過 PKCE 行授權碼流程:玩家在佢自家个瀏覽器肚登入再同意,永遠毋係在你个遊戲肚,你个伺服器正用佢个密鑰交換授權碼。在該隻同意肚要求 embed:play 摎你簽發時用个每隻權限範圍,還愛包含 events:read,無恁樣,玩家連結以後你就收毋到任何關係到佢个消息。
過後用該隻交換傳轉來个委派權杖呼叫 linkEmbedPlayer,永遠毋好用你用戶端自家个權杖。佢个回應肚有:
status:這隻呼叫建立連結个時節係 linked,連結本來就有效个時節係 existing;
subject,帳戶个 subject,玩家个事件從這下開始都會帶佢;
previous_subject,訪客个 subject,佢較早个事件會保留佢;
linked_at,連結建立个時間;
scopes,這隻玩家个權杖這下最多做得有个權限範圍;
carried,這隻呼叫搬到帳戶个資料列,照表分;
kept,留在訪客該位个資料列,像一隻還在該寫个計畫。
連結重複做係安全个,重複个時節會將 kept 報个東西搬完。帶任何一隻 subject 个事件,都轉送到同一隻 player_ref。你下一擺為這隻玩家簽發个時節,account_linked 會回應做 true,玩家做个事情還係你付錢。
想愛結束連結,就用你用戶端自家个權杖呼叫 unlinkEmbedPlayer。無任何東西會搬轉去訪客。學習者也做得自家結束連結,在「連結个 App」肚將你个 App 移除。