如何通过编程更新Google OAuth客户端的redirect_uris以支持多子域名?
如何编程更新OAuth 2.0客户端的redirect_uris列表
当然可以通过编程方式更新OAuth 2.0客户端的redirect_uris列表,无需局限于GUI操作。你可以使用Google Cloud Credentials API实现这个需求,具体思路和操作如下:
前置准备:
- 在云控制台的API库中搜索并启用
Credentials API - 创建并下载服务账号密钥,确保该账号拥有
OAuth Config Editor或Editor权限,具备修改客户端凭证的权限
- 在云控制台的API库中搜索并启用
核心操作流程:
- 调用
projects.clientSecrets.get接口获取当前客户端的完整配置,提取现有redirect_uris列表 - 将需要新增的子域名跳转地址(如
https://a.example.com/callback、https://b.example.com/callback)添加到列表中 - 调用
projects.clientSecrets.patch接口提交更新后的配置(使用patch而非update可避免覆盖其他未修改的配置项)
- 调用
Python示例代码:
from google.oauth2 import service_account from googleapiclient.discovery import build # 加载服务账号密钥文件 credentials = service_account.Credentials.from_service_account_file( 'service-account-key.json', scopes=['https://www.googleapis.com/auth/cloud-platform'] ) # 构建Credentials API客户端 service = build('credentials', 'v1', credentials=credentials) # 客户端资源名称,格式为"projects/{项目ID}/clientSecrets/{客户端ID}" client_secret_name = 'projects/your-project-id/clientSecrets/your-client-id' # 获取当前客户端配置 current_config = service.projects().clientSecrets().get(name=client_secret_name).execute() # 新增需要支持的子域名跳转地址 new_redirects = [ 'https://a.example.com/callback', 'https://b.example.com/callback' ] current_config['web']['redirectUris'].extend(new_redirects) # 提交更新 updated_config = service.projects().clientSecrets().patch( name=client_secret_name, body=current_config ).execute() print("跳转地址更新完成:", updated_config['web']['redirectUris'])注意事项:
- 跳转地址必须符合规范:生产环境需使用HTTPS,本地测试可使用
http://localhost开头的地址 - 若需批量添加大量子域名跳转地址,可通过脚本生成地址列表后批量注入更新
- 操作前建议备份当前客户端配置,避免误操作导致配置丢失
- 跳转地址必须符合规范:生产环境需使用HTTPS,本地测试可使用
内容的提问来源于stack exchange,提问作者Arnaud
相关产品推荐
相关产品推荐

