本指南可協助您選擇使用 Google Identity 服務程式庫進行使用者授權,或實作自己的 JavaScript 程式庫。有助於您決定最適合網路應用程式的 OAuth 2.0 授權流程。
閱讀本指南前,請先熟悉「總覽」和「使用者授權運作方式」指南中說明的詞彙和概念。
GIS 程式庫會在使用者裝置上支援的瀏覽器中執行。不適用於 Node.js 等伺服器端 JavaScript 架構,請改用 Google 的 Node.js 用戶端程式庫。
本指南僅涵蓋授權和資料共用主題。這項服務不會審查使用者驗證,如需使用者註冊和登入相關資訊,請參閱「使用 Google 帳戶登入」和「從 Google 登入遷移」指南。
判斷 GIS 程式庫是否適合您
您必須選擇使用 Google 的程式庫,還是自行建立最符合需求的程式庫。功能總覽:
- Google 的 Identity 服務 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 時所需的新有效存取權杖。 |