本指南可協助您選擇要使用 Google Identity 服務程式庫進行使用者授權,或是實作自己的 JavaScript 程式庫。可協助您判斷哪種 OAuth 2.0 授權流程最適合您的網頁應用程式。
閱讀本指南之前,我們假設您已熟悉總覽和使用者授權的運作方式指南中所述的術語和概念。
GIS 程式庫會在使用者的裝置上透過這些支援的瀏覽器執行。這不適合與 Node.js 等伺服器端 JavaScript 架構搭配使用,而是使用 Google 的 Node.js 用戶端程式庫。
本指南僅涵蓋授權和資料共用主題。但不會審查使用者驗證資訊,請改為參閱「使用 Google 帳戶登入」和「從 Google 登入遷移」指南,瞭解使用者註冊和登入流程。
判斷 GIS 程式庫是否適合您
您必須選擇使用 Google 的程式庫,或自行建立最適合的程式庫。特色和功能總覽:
- Google 的 Identity Services JavaScript 程式庫會實作下列項目:
- 提供彈出式視窗的同意聲明流程,可盡量減少重新導向,讓使用者在整個授權程序中留在您的網站。
- 安全性功能,例如跨網站要求偽造內容 (CRSF)。
- 要求個別範圍及確認使用者同意聲明的輔助方法。
- 易於理解的錯誤處理和說明文件連結,可供工程師在開發期間和之後的網站訪客使用。
- 在未使用 Identity Services 程式庫的情況下實作時,您必須負責:
- 使用 Google 的 OAuth 2.0 端點管理要求與回應 (包括重新導向)。
- 改善使用者體驗。
- 實作安全性功能以驗證要求和回應,並防範 CSRF。
- 確認使用者已授予任何要求範圍的同意聲明的方法。
- 管理 OAuth 2.0 錯誤代碼、建立使用者可理解的訊息,以及使用者說明的連結。
總而言之,Google 提供的 GIS 程式庫可協助您快速安全地實作 OAuth 2.0 用戶端,並改進使用者授權體驗。
選擇授權流程
無論您決定使用 Google Identity 服務 JavaScript 程式庫或自行建立程式庫,還是需要從兩種 OAuth 2.0 授權流程中擇一使用:隱含或授權碼。
這兩種流程都會產生可用來呼叫 Google API 的存取權杖。
這兩個流程的主要差異如下:
- 使用者動作的次數
- 您的應用程式是否會呼叫 Google API
- 如果需要後端平台來託管端點,以及儲存個別使用者帳戶的重新整理權杖,以及
- 或較低層級的使用者安全
比較流程及評估安全性要求時,請考慮考慮到使用者安全性等級會因您選擇的範圍而異。舉例來說,相較於在雲端硬碟中編輯檔案讀取/寫入範圍,以唯讀方式查看日曆邀請可能會帶來較不負責的風險。
OAuth 2.0 流程比較
隱式流程 | 授權碼流程 | |
需要使用者同意 | 針對每項權杖要求,包括替換過期的權杖。 | 僅適用於第一個權杖要求。 |
必須提供使用者 | 是 | 不支援,支援離線使用。 |
使用者安全性 | 最不 | 大多數使用者都有用戶端驗證,可以避免瀏覽器中的權杖處理風險。 |
已核發存取權杖 | 是 | 是 |
已核發更新權杖 | 否 | 是 |
須使用支援的瀏覽器 | 是 | 是 |
用於呼叫 Google API 的存取權杖 | 而只會從使用者瀏覽器執行的網頁應用程式中進行。 | 透過後端平台運作的伺服器,或從使用者瀏覽器執行的網頁應用程式取得。 |
需要後端平台 | 否 | 是,用於端點託管和儲存。 |
需要安全的儲存空間 | 否 | 是,針對更新權杖儲存空間。 |
必須代管授權碼端點 | 否 | 是,接收 Google 提供的授權碼。 |
存取權杖效期行為 | 必須要有使用者手勢 (例如按下按鈕或點選連結),才能要求並取得新的有效存取權杖。 | 初始使用者要求後,您的平台會交換已儲存的更新權杖,以取得呼叫 Google API 所需的新有效存取權杖。 |