伺服器套件
這頁是對英文翻譯過來的。若兩篇無仝,以英文頁為準。 看英文頁
你的伺服器是嵌入內底保管密鑰的彼一半。伺服器套件包著你所用語言的 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。無任何物件會徙轉去訪客。學習者嘛會當家己結束連結,佇「連結的應用程式」內底共你的應用程式移除。