哈囉大家好!
今天要來分享的是登入功能的設計,因為我想要可以直接透過Google帳號進行登入,所以要用Google OAuth來完成登入功能。
在正式進入實作部分前,要先簡單介紹一下「OAuth」!
OAuth是Open Authoration-開放授權的縮寫,是一種開放標準的授權框架或協定(protocol)。
透過OAuth, 一個應用程式(client)可以在不取得使用者帳戶密碼的前提下,獲取該使用者在另一個服務提供者(Resource Provider)中受保護資源的權限。
以我這次要實際操作的情境來舉例說明,我想要透過Google OAuth讓使用者可以用Google帳號來登入我的應用程式,並且我可以獲得使用者姓名、大頭貼...等相關資訊。
大部分大型應用程式都會提供「Google帳號登入」的功能,當我們嘗試透過某個帳號登入時,螢幕畫面會顯示「允許此應用程式存取您的OO資訊?」...等。當看到類似的提示時,表示正在使用OAuth。
容易搞混的有下面兩個概念:
對OAuth有簡單的認識後,接著要開始實作了!
首先先從最簡單的介面開始製作,透過ng new <project-name> --no-standalone
建立好Angular專案後,就可以寫一個簡單(陽春)的登入頁面了!(我建立的是ngModule專案)
因為登入頁面東西比較少,所以我直接把登入頁寫成一個component,預計這裡會有個按鈕,使用者可以透過按鈕來用Google Account進行登入。
angularx-social-login這個套件是專門讓Angular專案做Google OAuth來使用的,必須透過npm來進行安裝(在前端檔案根目錄執行安裝指令:npm i @abacritt/angularx-social-login
)
下面是設置憑證的簡單流程:
註:最後拿到的Client ID是用來讓Google識別我的應用程式,用來配置第三方的登入套件,讓Google知道是哪個應用程式在請求授權。這個Client ID會被用來設定GoogleLoginProvider
。
在OAuth流程中提到的Access Token(存取權杖)則是使用者登入成功後,應用程式用來存取保護資源的動態授權憑證。
平常用Google帳號登入其他應用程式時覺得非常方便,沒想到背後有這些過程和檢驗步驟~
明天要來分享實作的程式碼,希望BUG不會爆炸
那就明天再見啦~~