# 如何追蹤使用者從哪裡加入 LINE 官方帳號

大家好,我是做出「LINE 數位版名片」的 LINE API 專家均民。

這是一篇在臉書社團看到的問題 (提問網址1) (opens new window) (提問網址2) (opens new window),追蹤使用者從哪個管道加入的需求,可以很容易的用 LIFF v2 來達成!

在這裡我直接用我前陣子辦過的活動來舉例,因為公司的產品想要衝好友數,所以就決定辦一個活動時間內邀請好友就送獎品的活動,雖然活動時間已經結束,但是大家還是可以點選這個連結來試玩:

https://liff.line.me/1653958047-59ZK2VNQ/referral?inviter=U118213b77e8b7d7ae0e38c454bbd6dc2 (opens new window)

# 範例及畫面

畫面 說明
在打開上面的那個邀請連結後,如果使用者沒登入,會先要求使用者登入
登入以後就會看到 LIFF 的授權頁面。
這時候往下滑,就能看到在授權頁面也會幫你加入 LINE 官方帳號,這個就是 LINE v2 的專屬新功能 Bot link feature (opens new window)
這時候就會開啟 LIFF 畫面,通常沒意外的話,使用者也同時加入 LINE 官方帳號了。在此處我多放了一個連結,方便使用者按下去後可以直接打開 LINE 官方帳號。

# 運作原理

為了實現好友邀請的需求,所以我需要把邀請人放到 LIFF 的參數之中:

?inviter=U118213b77e8b7d7ae0e38c454bbd6dc2

當使用者打開邀請連結以後,LIFF 會先把網址導向 LIFF 所設定的 Endpoint URL:

https://example.com/liff/full?liff.state=%2Freferral%3Finviter%3DU118213b77e8b7d7ae0e38c454bbd6dc2

我為了避免 LIFF v2 的 js SDK 跳轉第二次,所以在後端直接解析 liff.state 中的資料,並且將 liff.state 的參數移除,最後讓後端改傳 302 Found 並且透過 Header 的 Location 給予新的網址:

Location: https://example.com/liff/full?lp=%2Freferral&inviter=U118213b77e8b7d7ae0e38c454bbd6dc2

最後,再從 LIFF 中呼叫 liff.getProfile() 取得使用者的 userId,在透過 AJAX 傳送 inviter 和 userId 給予後端,這樣就成功記錄是誰邀請這個使用者的囉!

# 實作過程需要注意的地方

# 記得將 LINE Login 改成 Publish

剛建立完 LINE Login 時,預設會是開發中的狀態,開發時因為自己是開發者所以都能正常執行,每次都是要給別人用的時候才想到忘記開成 Published。

1 2 3

# 小心 LIFF v2 liff.state 會掉參數

上線前務必親自測試,到底什麼參數能夠成功帶過去,特別注意 iOS 和 Android 平台最好都測試過。

# 務必使用同一個 Provider 來建立 LINE Login 及官方帳號

不然在 liff.getProfile() 會抓到不同的 userId 喔!

# Normal v.s. Aggressive

Bot link feature 提供了兩種方式可以提示使用者來加入 LINE 官方帳號,這個可以自行決定要用哪一個喔!

# 使用者可能會沒加入 LINE 官方帳號

Bot link feature 的授權頁面中,是允許使用者不加入的,所以如果需要要求使用者加入 LINE 官方帳號的話,需要後端額外判斷喔!

# 原始碼及參考連結

TIP

本文範例程式的原始碼授權為 MIT License。