You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过gcloud命令或脚本配置OAuth同意屏幕?

如何自动化配置Google Cloud OAuth同意屏幕及相关操作

完全可以通过gcloud CLI、bash脚本或Python脚本实现OAuth同意屏幕的自动化配置,同时覆盖API启用、凭证下载等全流程操作。以下是具体实现方案:

一、gcloud CLI + Bash脚本实现

1. 启用所需API

先启用OAuth服务及业务所需API:

# 启用OAuth核心服务
gcloud services enable oauth2.googleapis.com
# 启用目标业务API(示例为Drive API,替换为实际需要的)
gcloud services enable drive.googleapis.com

2. 配置OAuth同意屏幕

gcloud的alpha命令支持配置绝大多数同意屏幕字段,外部应用需提交审核,内部应用可直接生效:

# 创建OAuth品牌(外部应用场景)
gcloud alpha iap oauth-brands create --application_title="你的应用名称" --support_email="你的支持邮箱"
# 获取品牌ID用于后续配置
BRAND_ID=$(gcloud alpha iap oauth-brands list --format="value(name)")
# 创建OAuth客户端并配置基础信息
gcloud alpha iap oauth-clients create $BRAND_ID \
  --display_name="客户端显示名称" \
  --redirect_uris="https://your-redirect-uri.com/callback" \
  --scopes="openid,email,profile"
# 补充隐私政策、服务条款等字段
gcloud alpha iap oauth-brands update $BRAND_ID \
  --privacy_policy_url="https://your-domain.com/privacy" \
  --terms_of_service_url="https://your-domain.com/terms"
# 提交外部应用上线审核(内部应用可跳过此步)
gcloud alpha iap oauth-brands submit $BRAND_ID

3. 创建并下载凭证

# 创建服务账号
gcloud iam service-accounts create "app-service-account" --display-name="应用服务账号"
# 下载服务账号JSON凭证
gcloud iam service-accounts keys create "app-credentials.json" \
  --iam-account="app-service-account@你的项目ID.iam.gserviceaccount.com"

4. 一键执行的Bash脚本示例

#!/bin/bash
# 替换为你的实际配置信息
PROJECT_ID="your-project-id"
APP_TITLE="Your App Name"
SUPPORT_EMAIL="support@your-domain.com"
REDIRECT_URI="https://your-redirect-uri.com/callback"
SCOPES="openid,email,profile"
PRIVACY_URL="https://your-domain.com/privacy"
TERMS_URL="https://your-domain.com/terms"

# 设置当前项目
gcloud config set project $PROJECT_ID

# 启用API
gcloud services enable oauth2.googleapis.com drive.googleapis.com

# 创建OAuth品牌
gcloud alpha iap oauth-brands create --application_title="$APP_TITLE" --support_email="$SUPPORT_EMAIL"
BRAND_ID=$(gcloud alpha iap oauth-brands list --format="value(name)")

# 创建OAuth客户端
gcloud alpha iap oauth-clients create $BRAND_ID \
  --display_name="$APP_TITLE Client" \
  --redirect_uris="$REDIRECT_URI" \
  --scopes="$SCOPES"

# 更新品牌附加信息
gcloud alpha iap oauth-brands update $BRAND_ID \
  --privacy_policy_url="$PRIVACY_URL" \
  --terms_of_service_url="$TERMS_URL"

# 提交审核(外部应用启用)
gcloud alpha iap oauth-brands submit $BRAND_ID

# 创建服务账号并下载凭证
gcloud iam service-accounts create "app-service-account" --display-name="App Service Account"
gcloud iam service-accounts keys create "app-credentials.json" \
  --iam-account="app-service-account@$PROJECT_ID.iam.gserviceaccount.com"

echo "自动化配置完成!凭证已保存至 app-credentials.json"

二、Python脚本实现(结合Google Cloud API)

1. 安装依赖

pip install google-api-python-client oauth2client

2. 完整Python脚本示例

from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
import json

# 替换为你的配置信息
PROJECT_ID = "your-project-id"
APP_TITLE = "Your App Name"
SUPPORT_EMAIL = "support@your-domain.com"
REDIRECT_URI = "https://your-redirect-uri.com/callback"
SCOPES = ["openid", "email", "profile"]
PRIVACY_URL = "https://your-domain.com/privacy"
TERMS_URL = "https://your-domain.com/terms"
SA_KEY_PATH = "path/to/your/service-account-key.json"

# 初始化API客户端
credentials = ServiceAccountCredentials.from_json_keyfile_name(
    SA_KEY_PATH,
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
iap_service = build("iap", "v1", credentials=credentials)
service_usage = build("serviceusage", "v1", credentials=credentials)

# 1. 启用所需API
service_usage.services().enable(name="services/oauth2.googleapis.com").execute()
service_usage.services().enable(name="services/drive.googleapis.com").execute()

# 2. 创建OAuth品牌
brand_response = iap_service.brands().create(
    parent=f"projects/{PROJECT_ID}",
    body={"applicationTitle": APP_TITLE, "supportEmail": SUPPORT_EMAIL}
).execute()
BRAND_ID = brand_response["name"]

# 3. 创建OAuth客户端
client_response = iap_service.brands().identityAwareProxyClients().create(
    parent=BRAND_ID,
    body={
        "displayName": f"{APP_TITLE} Client",
        "redirectUris": [REDIRECT_URI],
        "oauthScopes": SCOPES
    }
).execute()

# 4. 更新品牌附加信息
iap_service.brands().patch(
    name=BRAND_ID,
    body={"privacyPolicyUrl": PRIVACY_URL, "termsOfServiceUrl": TERMS_URL},
    updateMask="privacyPolicyUrl,termsOfServiceUrl"
).execute()

# 5. 提交外部应用审核
iap_service.brands().submit(name=BRAND_ID).execute()

print(f"自动化配置完成!客户端ID: {client_response['clientId']}")

三、关键注意事项

  • gcloud alpha属于预览功能,使用前请确认gcloud版本为最新版。
  • 外部OAuth应用提交审核后,仍需等待Google团队人工审核,无法跳过此环节。
  • 执行脚本的账号需拥有OAuth Config Editor、IAM Admin、Service Usage Admin等必要权限。
  • OAuth客户端密钥暂无法通过gcloud或API直接导出,可提前在控制台创建后存入Cloud Secrets Manager,脚本中调用获取。

内容的提问来源于stack exchange,提问作者Alex Doc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:23:13