「使用passport處理FB、Google第三方登入」相關筆記

總結

使用 npm package passport-facebookpassport-google-oauth20passport-line讓 Todo List 專案可以透過 FB、Google 或 LINE 帳號進行第三方登入

環境

passport: 0.4.1
passport-facebook: 3.0.0
passport-google-oauth20: 2.0.0
passport-line: 0.0.4
os: Windows_NT 10.0.18363 win32 x64

筆記

專案結構

僅列出與本次實作相關的資料夾與檔案:

config
  passport_FB.js
  passport_Google.js
  passport_LINE.js
models
  user.js
routes
  modules
    auth.js
app.js

FB 流程

fb dashboard

clientID 與 clientSecret 都可在 FB 開發者後台取得

Google 流程

後台流程如下:

  1. 進入 GCP 後選擇 APIs & Service,選擇 Credentials 並建立新的 Oath client ID

    Google step 1

  2. 應用程式類型因應練習專案選擇 Web application

    Google step 2

  3. 與 FB 較為不同,Authorized redirect URIs 為必填,練習情況下直接導回localhost:3000/<auth/google/callback>即可(前述<>內容與 endpoint 設定一致)

    Google step 3

LINE 流程

官方說明文件:

官方申請入口:LINE Developer: Products / LINE Login

後台流程如下:

  1. 與 FB 以及 Google 較不同,LINE 搭配 passport 處理第三方登入會用到的是Channel ID 與Channel Secret,兩筆資料可在 Basic Settings 中複製

    LINE step 1 LINE step 2

  2. 切換到 LINE Login 分頁,設定 Callback URL

    LINE step 3

  3. 其餘流程與 FB 以及 Google 登入的差異是,透過 LINE 向使用者要求授權時,不需要帶入scope資料(參考以下auth.js第 32 行,與 FB 以及 Google 的內容不同)

補充:

auth.js 內容

app.js 設定

記得require在 config 資料夾中設定好的passport_FBpassport_Google並呼叫之即可

關於 OAuth 2.0

OAuth allows you (the User) to grant access to your private resources on one site (which is called the Service Provider), to another site (called Consumer). While OpenID is all about using a single identity to sign into many sites, OAuth is about giving access to your stuff without sharing your identity at all (or its secret parts).

Reference: Eran Hammer-Lahav: Explaining OAuth

Authentication

Authorization

參考文件