# OAuth2 標準參數對照表 ## 📌 1. GetAuthorizationUrl (授權網址產生) | 參數名稱 | 是否標準 | 說明 | |-----------------------|--------------|------| | `client_id` | ✅ 是 | OAuth2 用戶端應用的 ID。 | | `redirect_uri` | ✅ 是 | 使用者授權後導回的 URI。 | | `response_type` | ✅ 是 | 通常為 `"code"`,表示要求授權碼。 | | `scope` | ✅ 是 | 權限範圍,用空格分隔。 | | `state` | ✅ 是 | CSRF 防護的隨機字串,會原樣返回。 | | `code_challenge` | ✅(PKCE) | 使用 PKCE 時,需傳入 SHA256 編碼結果。 | | `code_challenge_method`| ✅(PKCE) | 指定 PKCE 使用的方式,一般為 `S256`。 | > 備註:前五項為 OAuth 2.0 核心協定([RFC 6749](https://tools.ietf.org/html/rfc6749)),後兩項為 PKCE 擴充([RFC 7636](https://tools.ietf.org/html/rfc7636))。 --- ## 📌 2. GetAccessToken (授權碼換 Access Token) | 參數名稱 | 是否標準 | 說明 | |-----------------|----------|------| | `client_id` | ✅ 是 | 用戶端應用的 ID。 | | `client_secret` | ✅ 是 | 用戶端密鑰(公用應用可能不需要)。 | | `grant_type` | ✅ 是 | 固定為 `authorization_code`。 | | `code` | ✅ 是 | 使用者授權後取得的授權碼。 | | `redirect_uri` | ✅ 是 | 與授權階段使用的 URI 必須一致。 | | `code_verifier` | ✅(PKCE)| 搭配 `code_challenge`,原始未 hash 的字串。 | --- ## 📌 3. RefreshAccessToken (使用 Refresh Token 取得新 Access Token) | 參數名稱 | 是否標準 | 說明 | |-----------------|----------|------| | `client_id` | ✅ 是 | 用戶端應用的 ID。 | | `client_secret` | ✅ 是 | 用戶端密鑰(某些平台可省略)。 | | `grant_type` | ✅ 是 | 固定為 `refresh_token`。 | | `refresh_token` | ✅ 是 | 上一次取得的 refresh token。 | | `scope` | ✅(可選)| 有些平台允許重新指定 scope。 | --- ## 📝 其他建議補充參數(依平台而異) | 參數名稱 | 說明 | 適用平台 | |------------------|------|-----------| | `access_type=offline` | 要求授權時回傳 refresh_token | Google | | `prompt=consent` | 強制顯示授權畫面(避免 silent login) | Google | | `include_granted_scopes=true` | 自動保留使用者先前授權範圍 | Google | --- ## 🔒 安全建議 - 強烈建議所有公用用戶端(SPA、行動應用)**啟用 PKCE**。 - 儲存 `refresh_token` 時應加密保管,避免洩露。