# 建立 Google Cloud 專案 - 進入 https://console.cloud.google.com 並登入 Google 帳戶。 - 建立新專案並命名,例如 Google login。 - 選取剛建立的專案,開啟「API 與服務」>「憑證」。 # 設定 OAuth 同意畫面 - 選擇使用者類型為「外部」。 - 填寫應用程式名稱與開發者聯絡資訊。 - 新增 Scopes,例如:email、profile。 - 新增測試用戶(需為你有權登入的 Gmail)。 # 建立 OAuth 2.0 憑證 - 點選建立憑證,選擇 OAuth 用戶端 ID。 - 選擇應用程式類型為「網頁應用程式」。 - 在授權的重新導向 URI 中加入 Postman 的 redirect URL。 # 設定 Postman 取得 Access Token - 在 Postman 的 Authorization 標籤選擇 OAuth 2.0。 - Grant Type 選擇 Authorization Code。 - 填入 Client ID、Client Secret。 - 加入所需的 scope(如 userinfo.email)。 - 點擊「Get New Access Token」,使用測試帳號登入授權。 - 若出現彈跳視窗問題,需至瀏覽器開啟彈窗權限。 - 登入後取得 Access Token 並儲存使用。 # 使用 Token 呼叫 Google API - 嘗試透過 Token 呼叫 Google Cloud API(例如查詢專案列表)。 - 若出現 insufficient authentication scopes,需新增額外 scope。 - 多個 scope 可用空格分隔並重新取得新 token。 # 啟用 Google Cloud Resource Manager API - 進入專案中的「啟用 API 與服務」。 - 搜尋並啟用「Cloud Resource Manager API」。 - 啟用後重新發送請求,即可成功取得專案清單。 # Resource * [Cloud Resource Manager API ](https://cloud.google.com/resource-manager/reference/rest) --- ![image](https://hackmd.io/_uploads/BJnucAcWbe.png) 欄位 | 值 | -------- | -------- | Grant Type | Authorization Code Callback URL | https://oauth.pstmn.io/v1/callback(跟你在 Google Console 設的一樣) Auth URL | https://accounts.google.com/o/oauth2/v2/auth Access Token URL | https://oauth2.googleapis.com/token Client ID | 你在 Google Console 建立的 Client Secret | 同上 Scope | openid email profile https://www.googleapis.com/auth/youtube https://www.googleapis.com/oauth2/v3/userinfo State | 可以空白 Client Authentication | Send as Basic Auth header ``` ya29.a0AW4Xtxg05zKSGgLvSBDw-Qmmp88zZVyHrPlaXpZ8MaZRs3-j78p41gPwNOxcxtlDAz1erzX5aHK2tJCtXGjs18-_toyN9eOVdHUDfw_dsAp-mR5aqZEzv4X3qDNcwFLiJ9uWUe3eBZyZlLpkTUPaBA3MCJY8KIRfijze0YUHMHMaCgYKAVUSARUSFQHGX2MiRfF2HB6phHptmzDLtSLDQQ0178 ``` ``` 526518801458-1ggj4pothqg4o1pagjoq0mf7us19ui7s.apps.googleusercontent.com ``` ``` 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 ``` ``` let response = pm.response.json(); pm.globals.set("google_access_token", response.access_token); ``` ![image](https://hackmd.io/_uploads/r1Gh2yj-Zx.png) ![image](https://hackmd.io/_uploads/SJ9phJjbbe.png) # Terminology - Google Cloud Console:Google 提供的雲端平台管理介面,用來建立與管理雲端專案與資源。 - OAuth 2.0:一種授權框架,允許第三方應用程式存取使用者資源而不洩漏密碼。 - Client ID:OAuth 中辨識應用程式身分的唯一識別碼。 - Client Secret:OAuth 中的密鑰,用來驗證應用程式身分。 - Redirect URI:OAuth 驗證成功後導回應用程式的網址。 - Authorization Code:OAuth 驗證流程中,授權伺服器提供的暫時代碼。 - Access Token:OAuth 授權後取得的存取令牌,用於存取受保護資源。 - Refresh Token:用於延長存取權限效期的令牌。 - Postman:API 測試工具,用來發送請求並查看回應。 - Token Name:Postman 中自訂存取令牌的名稱。 - Scope:OAuth 中的權限範圍,用來指定授權存取哪些資料。 - Email Scope:允許應用程式存取使用者的電子郵件資訊。 - Userinfo.email:OAuth 的一個範圍,取得使用者的 email。 - userinfo.profile:OAuth 的一個範圍,取得使用者的基本個人資料。 - External User Type:OAuth 同意畫面中允許外部使用者登入的選項。 - OAuth Consent Screen:OAuth 流程中顯示給使用者授權資訊的頁面。 - Google Cloud Project:Google Cloud 中的專案單位,用來管理資源和 API。 - Credentials:在 Google Cloud 中的憑證,用於 OAuth 驗證。 - API & Services:Google Cloud 中的服務管理入口,可啟用各種 API。 - OAuth Client ID:用於建立 OAuth 憑證的選項,產生 client ID 和 secret。 - Web Application:OAuth 應用類型之一,常見於前端應用程式。 - Test Users:在測試模式中允許登入應用的使用者帳號。 - Authorization Tab:Postman 中設定授權方式的分頁。 - Grant Type:OAuth 中的授權類型,例如 Authorization Code。 - Get New Access Token:Postman 中的按鈕,用於產生新的存取令牌。 - Popup Blocker:瀏覽器中阻擋彈出視窗的功能,需要關閉以進行 OAuth 登入。 - Privacy and Security:瀏覽器中設定隱私與安全性選項的位置。 - Site Settings:瀏覽器中針對特定網站的設定頁面。 - Cloud Resource Manager API:Google Cloud 提供的 API,用於管理專案與資源。 - Enable API:在 Google Cloud 中啟用 API 服務的動作。 - API Disabled Error:API 未啟用時會回傳的錯誤訊息。 - API Permissions:授權應用存取特定 Google API 的權限。 - Insufficient Authentication Scopes:OAuth 權限範圍不足的錯誤訊息。 - JSON 憑證檔:包含 client ID 和 client secret 的 JSON 格式檔案。 - Open in Browser:Postman 中使用瀏覽器開啟 OAuth 登入畫面的選項。 - Proceed:授權完成後在 Postman 中繼續流程的按鈕。 - Token Expiration:OAuth 存取令牌的有效時間。 - Authorization Error:授權流程中出現錯誤的訊息。 - API Call:發送 API 請求至伺服器取得或操作資料的動作。 - API Response:伺服器回應 API 請求所傳回的資料。 - Cloud Project ID:Google Cloud 專案的唯一識別碼。 - Deleted Project:已刪除但仍可見於列表中的 Google Cloud 專案。 - Testing Mode:OAuth 應用仍在測試階段,只限特定使用者登入。 - Dashboard:Google Cloud 中的主控台,用於查看項目總覽。 - Create Credentials:建立新的 API 憑證流程。 - Add Scope:在 OAuth 同意畫面中加入新的授權範圍。 - Save and Continue:儲存當前 OAuth 設定並繼續下一步。 - Summary Screen:設定流程的摘要畫面。 - Developer Contact Info:開發者聯絡資訊,顯示於 OAuth 同意畫面。 - Authorization URL:發起 OAuth 授權請求時所使用的網址。 - Token Exchange:OAuth 流程中將授權碼兌換為存取令牌的步驟。 - Consent Prompt:使用者登入時顯示的授權同意提示。