昨天我們看過下方的循序圖,認識liff.login()與liff.isLoggedIn()的用途。
會不會有人也和我一樣,發現在實際用Chrome瀏覽器開啟LIFF APP的時候,觀察到URL有所變化。
liff.login()前後做了哪些事?
實際點擊聊天室內的LIFF URL
我們到了Line Login的畫面,如同一開始的流程圖所示。liff.login()之後,跳轉到Line Login Server。
什麼是Line Login
LINE Login 功能整合至 web app ,讓用戶可使用 LINE 帳號登入 app。
LINE Login 的認證及授權流程是以 OAuth 2.0 與 OpenID® Connect 協定為基礎
這時候可以仔細觀察到網址的組成:
如此長一串的URL,其實在做得事情是: 為 APP 要求權限,進行用戶驗證。可以發現其中帶有query parameter,是不是覺得有幾個單字很眼熟!?
此時URL 中的 query parameter:
認證及授權後,導頁至Endpoint URL,其中的 query parameter:
到這裡,我們就可以用code換取access token,同時取得id token,後續再透過id token 取得使用者資料與 Email Address。
如果用手機,第一次點擊LIFF URL,會出現認證頁面
從這裡可以更認識到,起初在建立Login Channel的名稱及描述內容,皆顯示於畫面上。
另外也可以注意到,用戶可以按取消,拒絕為開發者提供權限。這時候就可能在liff.init()的errorCallback,抓到 Error Response。