1. 首页
  2. /
  3. 阅读文章

LINE LIFF 怎麼測?

未分类 发布时间:2026年03月22日

想快速且可靠地測試LIFF應用,需要從環境建置與LINE後台設定開始,用正確的LIFF ID與HTTPS網域、在真機或模擬環境開啟,搭配模組化測試、錯誤與權限檢查,並驗證送訊、個資與效能情境。同時可以用自動化如Cypress或Puppeteer替換部分手動流程,注意驗證ID Token與權杖續期。即可!

LINE LIFF 怎麼測?

用一句話把事情拆清楚(費曼風格)

把LIFF視為「嵌在LINE裡的小網站」,測試就像確認一扇窗在不同房間、不同氣候下會不會卡住或漏風:先確定窗框(LINE後台、LIFF ID、HTTPS)裝對,再在真實房間(真機/桌面/模擬器)試開關;最後用工具檢查材料(API 行為、權限、效能、安全)。如果你能把每個步驟講給新人聽得懂,那就代表測試是完整的。

準備工作:先把基礎打好

  • LINE Developers 帳號與 Provider:建立 Provider,選擇合適的 Channel(通常是 LINE Login 或 Messaging API,依應用需求而定)。
  • 註冊 LIFF 應用:在後台新增 LIFF,指定你的應用 URL(必須是 HTTPS),取得 LIFF ID。LIFF 會給你一組可直接開啟的 URL 或 QR Code。
  • 確認網域與證書:LIFF 必須使用 HTTPS,憑證不可自簽(會在真機或瀏覽器報錯)。
  • 開發環境與 SDK:引用官方 LIFF SDK(通常透過 script 標籤或 npm 套件),初始程式要用到 liff.init({ liffId })。

分層測試策略(從容易到困難)

測試可以分成幾層:環境檢查 → 手動功能驗證 → 自動化測試與模擬 → 效能與安全壓力測試。這樣做的目的,是先把低成本、容易發現的問題清掉,再投入成本做難測的真機或安全驗證。

第一層:環境檢查(必做)

  • 核對 LIFF ID 是否正確嵌入在 liff.init。若 ID 不對,liff.init 會失敗或回報權限錯誤。
  • 用 LINE 後台提供的「Open」或 QR Code 在真機開啟,檢查網頁是否能正確載入。
  • 在開發瀏覽器檢查 console,有無 CORS、mixed-content(HTTP/HTTPS 混合)或證書錯誤。

第二層:手動功能驗證(核心流程)

列出你的「核心使用者旅程」,一一檢查。例如:開啟 LIFF → LINE 登入流程 → 取得使用者資訊 → 發送訊息 → 開啟外部頁面或關閉 LIFF。

  • 初始化與環境判定:測試 liff.isInClient(在 LINE 裡或瀏覽器)在不同情況下回傳是否正確,API 在「非 LINE 環境」應該有 graceful fallback。
  • 授權流程:呼叫 liff.login 時,檢驗 redirect 與 state、scope 是否正確,並模擬使用者拒絕授權的情境。
  • 個資與 Token:使用 liff.getProfile 與 liff.getAccessToken / liff.getDecodedIDToken,並在伺服器端驗證 ID Token(用 LINE 的公開金鑰,JWT 驗證)。
  • 互動 API:像 liff.sendMessages、liff.shareTargetPicker、liff.openWindow、liff.closeWindow 等,分別在 LINE client 與一般瀏覽器的行為應不同,必須逐項檢查。
  • 錯誤處理:斷網、API 回 4xx/5xx、Token 過期、權限不足等情境要有顯示與重試流程。

第三層:自動化測試與模擬

完整的 E2E(端到端)在真機上跑成本高,你可以先把 SDK 行為抽象化,做單元與整合測試,再在少量真機上做複查。

  • 單元測試:把使用到的 LIFF 方法包一層 adapter(例如 window.liff),在測試中用 stub 或 mock 取代。這樣可以用 Jest、Mocha 等做邏輯驗證。
  • E2E 與 UI 自動化:Cypress 或 Puppeteer 在桌面瀏覽器上模擬頁面流程,但它們無法在真實 LINE WebView 中執行 client-only 的行為,因此要用 stub 注入假的 liff 物件。
  • 真機自動化:若要在 LINE App 裡直接驗證,通常需用 Appium 或真機雲(Device Farm)來開啟 QR Code 或 deep link,這步較複雜且會和 LINE 客戶端版本相關。

實務檢查清單(可以印出來用)

項目 檢查重點
基本設定 LIFF ID、HTTPS、正確 channel、網域白名單、憑證有效
啟動流程 liff.init 成功、isInClient 結果、登入/登出流程正常
核心 API getProfile、sendMessages、openWindow 等行為與錯誤處理
授權與安全 ID Token 驗證、access token 管理、HTTPS 與 CSP
相容性 iOS/Android LINE 版本、LINE Desktop 行為差異、瀏覽器 fallback
效能 冷啟時間、bundle 大小、首次互動延遲

針對常見情境的具體測試項目

  • 非 LINE 瀏覽器打開:確認頁面能有清楚提示與 fallback(例如顯示「請在 LINE 中打開此連結」或提供登入流程)。
  • 登入被拒絕或取消:使用者拒絕授權時,應有友善提示與重試機制,不要直接崩潰或卡死。
  • Token 過期:模擬 access token/ID token 過期,檢查是否會自動重新導向、提示登入,或允許無登入下部分功能。
  • 分享與發訊息:sendMessages 有速率、格式限制,測試圖片、文字、template 等各種 payload。
  • 離線或弱網路:測試多次斷網與恢復、把重試策略與超時放在使用者可接受範圍。

效能與可觀察性(不要忽略)

LIFF 常被用作第一個接觸點,冷啟快慢直接影響體驗。做以下測試:

  • 量測 liff.init 到第一個可互動元素的時間(TTI-like)。
  • 控制 bundle 大小(拆 code-splitting、延遲載入非必要資源)。
  • 在不同網路條件(3G、4G、Wi-Fi)下做 Lighthouse 或 WebPageTest 分析。
  • 加入日誌與錯誤通報(Sentry 等),確保真機錯誤能回傳。

安全檢查重點

  • 伺服端驗證 ID Token:不可只在前端信任 ID Token,應用伺服端使用 LINE 的公鑰(JWT/JWKS)驗證 iss、aud、exp。
  • 避免敏感資料在前端長期儲存:不要把 access token 放在 localStorage 以免被 XSS 取得,必要時採短期儲存與安全 cookie。
  • CSP 與 XSS 防護:設定 Content-Security-Policy、輸入輸出做適當轉義。

常見錯誤與排查小技巧

  • liff.init 失敗:確認 LIFF ID 與所使用的 LIFF URL 是否配對;console 會給錯誤訊息。
  • 在桌面瀏覽器呼叫 client-only API:某些 API 僅在 LINE App 內可用(如 sendMessages),呼叫前用 isInClient 判定並提供 fallback。
  • 憑證或 CORS 問題:開發時用自簽證書會造成手機或 LINE Client 拒絕載入,建議使用有效憑證(Let’s Encrypt 等)。
  • ID Token 驗證失敗:check 註冊的 channelId 是否是 token 裡的 aud,伺服端使用 LINE 公鑰驗證簽章與 exp。

實例:如何在開發流程加入測試(步驟式)

  1. 在 LINE Developers 建立 LIFF,填入 HTTPS 網域與取得 LIFF ID。
  2. 本地開發時,先用 ngrok 或類似工具把本地 HTTPS 暴露出來,並把 URL 加到 LIFF 設定。
  3. 開發時注入簡單的 liff stub(回傳預設 profile),用單元測試驗證邏輯。
  4. 將應用部署到 staging,透過 QR Code 在 Android 與 iOS 真機測試主要流程。
  5. 用 Cypress/Puppeteer 做 UI 自動化,但同時在測試環境注入 stub,至少保證按鍵流程不會因外部因素失敗。
  6. 少量抽檢:在不同版本的 LINE App 與不同手機上做手動測試,確保最常見的客群覆蓋。

測試自動化範例小提示(模擬 liff)

在自動化測試中直接使用真實 LINE App 很難,通常做法是把 window.liff 換成一個假的物件,讓測試可以控制回傳值與錯誤時機。舉例(概念):在測試前注入一個全域物件,提供 getProfile、sendMessages 等 stub,並驗證你的 UI 對這些回傳的反應。

最後,幾個容易被忽略的地方

  • LINE Desktop 的 WebView 行為可能和手機不同,某些 API 在桌面上不可用或表現不一致。
  • 不同 LINE 版本間可能有行為差異,維護一個「最低支援版本」清單有助於決策。
  • 開發者常忘記在伺服器端驗證 ID Token,或用了錯誤的公鑰來源,務必把驗證流程自動化並紀錄。

好啦,這些是我在做 LIFF 測試時常用的思路和步驟——從環境、手動、到自動化與安全、效能,分層把工作做清楚。寫著寫著想到還有很多細節可以寫,但實務上就是把清單一項一項過掉,能把核心路徑弄穩,就已經解決大部分問題了。

最新文章