到底 liff.init() 是什麼? 何時執行? 執行後,可以做什麼? 跟URL們有什麼關係?
initialize的中文意思,即初始化,韋氏字典中的解釋: 將某樣東西設定在起始位置。是不是有感受到一些些成長(?)
liff.init() 的執行點在 Primary redirect URL 與 Secondary redirect URL 間。
當用戶點擊 LIFF URL,首先 LIFF Server 會將 URL 轉向至 Primary redirect URL,之後執行 liff.init()。執行的時候,URL 會再轉向至 Secondary redirect URL,然後LIFF APP就被開啟了!
此刻的你,是不是和我一樣滿頭問號,到底什麼是 Primary redirect URL 與 Secondary redirect URL呢?
其實就是在註冊設定的Endpoint URL。例如: https://example.com
從這篇文章中,又稱作 Destination URL。大致由 Endpoint URL + Path + Query param
組成,會因聊天室內LIFF URL的組成不同,而有所變化,例如:
當LIFF URL不含其餘資訊: https://liff.line.me/{liffId}
Secondary redirect URL
https://example.com/2020campaign/?key=value
由以下部分組成:
當LIFF URL含其餘資訊: https://liff.line.me/{liffId}/path_A/?key1=value1#URL-fragment
Secondary redirect URL
https://example.com/2020campaign/path_A/?key=value&key1=value1#URL-fragment
由以下部分組成:
這個URL與LINE Developers Console中,Methods for converting additional information in the LIFF URL的設定有關。DAY01在註冊的時候,有巧妙略過 (其實是忘記提到,欸不是)。
在建立好LIFF APP的時候,預設是Concatenate。兩個選項的差別在於,如果把設定改成Replace,Secondary redirect URL可能不包括/2020campaign/?key=value
,像是:
另外,也可能影響到liff.permanentLink.createUrl()的使用。
除了可以取得用戶的access token 和 ID token,很重要的點是,有部分的liff方法,須等到 liff.init() 執行完,才可使用。
想問問
假設A頁 liff 跳到 B頁 liff(兩者都有 liff init)
過程中 url 會帶有 liff.state 是為什麼?
網址會變成類似這樣的網址?
https://liff.line.me/1655383835-3ggggJ?code=JOG85Adax1ygW4rTjgrJ&liffClientId=1655383835&state=sqRn9Z9wx3dN
這部分和 Line 的 Web login 流程有所關聯,有興趣可以查找相關文件,如: 整合 LINE Login (v2) 與 web app
謝謝回覆!
我看了好幾遍??
Methods for converting additional information in the LIFF URL
這應該是取消了!!!