LINE 三個名詞別混了:LIFF 不能掛在 Messaging API 底下

賴管家編輯室
· 閱讀約 11 分鐘
LINE 三個名詞別混了:LIFF 不能掛在 Messaging API 底下

在開發者後台找資料時,容易卡住的不是按鈕在哪裡,而是三個名字看起來很像:Messaging API、LINE Login、LIFF。它們不是同一套功能的三個版本;一個管訊息機器人,一個管用 LINE 帳號登入,另一個則是能在 LINE 裡運作、可使用 LINE 使用者資料的網頁應用平台。

真正容易設錯的地方在從屬關係。LIFF app 只能加在 LINE Login 或 LINE MINI App 的 channel 底下,不能加在 Messaging API channel 底下。若要做的是會在 LINE 內使用帳號資料的 LIFF 網頁應用,先選對掛載的 channel,後面的設定才不會全部走偏。

搜尋「LINE API key」前,先把三個名稱對上

想串 LINE 時,會有人去搜「LINE API key」。但在 LINE 官方文件裡,會遇到的名稱是 Channel ID、Channel secret 與 Channel access token。三者名字接近,工作卻不同:Channel ID 是 channel 的識別碼;Channel secret 在 Messaging API 的情境用於驗證 webhook 簽章;Channel access token 則用在應用程式使用 channel 時的授權驗證。

先把名稱對上,後面看到 Basic settings、Messaging API 分頁或 webhook,才不會把該找的值找錯位置。尤其是 Channel ID 的用途是辨識 channel;在 Messaging API 的情境裡,Channel secret 用於驗證簽章,Channel access token 用於授權呼叫,三者的角色不同。

Messaging API、LINE Login、LIFF,其實是三種工作

Messaging API 是讓機器人伺服器和 LINE 平台互傳資料的功能。LINE 官方文件把它用於建立 bot;實作上可回覆加好友或傳訊息的使用者,也可在任何時間主動傳送訊息,並支援圖文選單等功能。想做回覆訊息的機器人,從這裡開始看比較對路。

LINE Login 是讓使用者以 LINE 帳號登入網站或 App 的社群登入服務,LINE 官方文件也註明這項服務免費。它解決的是登入身分這件事,不是收發官方帳號訊息。

LIFF 是 LINE 提供給網頁應用的平台;跑在這個平台上的網頁稱為 LIFF app。LIFF app 可以取得 LINE 平台提供的資料,例如 LINE 使用者 ID;在 LINE 內的 LIFF 瀏覽器開啟時,也能使用這些資料,不必再另外提示使用者登入。這不表示所有在 LINE 裡打開的網址都得做成 LIFF,而是 LIFF 適合需要使用 LINE 帳號資料的網頁應用。

Channel 是通道,provider 是服務的歸屬

LINE 官方在 Messaging API 入門文件中,把 channel 說明為服務提供者在自家服務中使用 LINE 平台功能的通道。白話說,Messaging API 或 LINE Login 都要透過對應的 channel 才能接到服務上。

provider 則是提供服務的個人、公司或組織。若同一個服務同時要串 Messaging API 和 LINE Login,LINE 官方要求兩個 channel 建在同一個 provider 底下。這不是後面再慢慢整理的欄位:channel 建立後不能移到另一個 provider。

更關鍵的是使用者 ID。LINE 官方說明,同一位 LINE 使用者在不同 provider 底下會有不同的使用者 ID,跨 provider 的 channel 不能靠使用者 ID 認成同一人。若機器人和登入網頁本來要辨認同一位客人,provider 一開始就要放對;否則即使兩邊都設定完成,也無法靠使用者 ID 對應到同一人。

LIFF 只能加在哪幾種 channel 底下

Messaging API channel 的來源是 LINE 官方帳號。LINE 官方帳號啟用 Messaging API 時,系統會建立對應的 Messaging API channel;它不能直接在 LINE Developers Console 裡建立。

LINE Login channel 則是在 Console 的 provider 頁面建立。兩種 channel 的建立路徑本來就不同,先分清這一點,才不會在錯的地方找 LIFF 設定。

LIFF app 的掛載規則也很明確:可加在 LINE Login 或 LINE MINI App 這兩種 channel,不能加在 Messaging API channel。LINE 官方目前也建議,新建的 LIFF app 以 LINE MINI App 建立。

這條規則特別值得留意,因為 LINE 官方文件註明,過去 LIFF app 曾能加在 Messaging API channel;官方 2020 年 2 月 5 日的公告指出,已不能再這樣做。看到舊畫面或舊步驟時,先回到目前的 channel 規則確認,比硬找不存在的設定入口有效。

所以,要做一個在 LINE 內運作、會使用客人 LINE 帳號資料的網頁應用,LIFF app 得加在 LINE Login 或 LINE MINI App channel,不是 Messaging API channel。

三個值名字像,位置和用途不能混用

先看 Channel ID。在 LINE Login channel 的 Basic settings 欄位表裡,LINE 官方將它列為 channel 的專屬識別碼。它幫你辨認正在處理哪一個 channel。

Channel secret 的位置與工作更具體。若使用 Messaging API,LINE 官方說明可在該 channel 的 Basic settings 取得它,且需要該 channel 的 Admin 權限。它是 webhook 簽章驗證所用的雜湊金鑰,機器人伺服器收到事件時會用到這項資料。

Channel access token 則是另一件事。LINE 官方文件的說明是:用來驗證授權,例如應用程式使用 Messaging API channel 時,確認使用者有權使用這個 channel。它有好幾種,其中 long-lived Channel access token 不會過期,只能透過 Messaging API channel 發行,並可在該 channel 的 Messaging API 分頁發行。重新發行後,原本有效的 long-lived token 會失效;官方另提供重發時把舊 token 的效期再延長最多 24 小時的做法。

這裡實用的判斷是:看到 webhook 簽章,回頭找 Channel secret;要讓應用程式呼叫 Messaging API,確認 Channel access token;要辨認 channel,才看 Channel ID。Channel access token 若外洩,LINE 官方舉的例子是第三方可能向所有好友發送廣播訊息,因此不要把它當成可以隨手貼到公開內容裡的字串。需要實際取得 token 時,可接著看取得 Channel Access Token 的教學;還在啟用 Messaging API 的階段,則看啟動 Messaging API 與取得 Channel Secret。

一則訊息怎麼走:webhook、reply、push 的分工

使用者傳訊息給 LINE 官方帳號後,LINE 平台會把 webhook 事件送到已註冊的網址;機器人伺服器確認事件後,再透過 LINE 平台回覆。webhook 可以把它想成「事件送達的位置」,不是拿來讓客人直接閱讀的頁面網址。

要回覆這次互動,使用的是 webhook 事件帶來的 reply token。LINE 官方規定 reply token 只能用一次,而且收到 webhook 後應在 1 分鐘內使用;超過 1 分鐘後,官方不承諾它仍可使用,也沒有說它必然立刻失效。

若不是針對剛收到的互動回覆,而是要在任何時間主動傳送訊息,官方歸在「隨時發送」這一類,push 是其中一種(另有 multicast、narrowcast、broadcast)。把兩件事分開記很夠用:reply 是有人觸發事件時的回覆;push 這類是可在任何時間主動發送。Webhook URL 要填在哪裡,可對照Webhook URL 回填位置的設定教學。

要用哪一個?先從想完成的事倒推

以下是依三者各自的用途整理的,不是 LINE 官方的比較表。

  • 想收發訊息,或做回覆訊息的機器人:用 Messaging API。
  • 想讓使用者用 LINE 帳號登入網站或 App:用 LINE Login。
  • 想讓網頁應用在 LINE 內使用 LINE 使用者資料:用 LIFF;LIFF app 要掛在 LINE Login 或 LINE MINI App channel 底下。

判斷的起點不是「哪個名字聽起來像 API」,而是店家到底要收發訊息、處理登入,還是讓網頁應用使用 LINE 資料。若同一個服務會同時串 Messaging API 與 LINE Login,記得兩個 channel 要建在同一個 provider。

延伸閱讀

官方來源

💬 還不確定從哪個後台開始?先看申請 LINE Developers 帳號,把 provider 和 channel 建立位置分清楚。
賴管家編輯室

我們把客戶現場遇到的問題、產品更新與經營做法寫成筆記,陪一個人做生意的你少走彎路。

照著做

今晚的訊息,
就讓賴管家先接。

免費試用不用先加好友;個人版+智能客服基本版一個月 NT$248,平均一天約 8 元。

免費開始試用