如何通过Client ID程序化识别Google Workspace已访问应用的名称与URL
可行方案:通过Google Workspace Admin API实现程序化映射
前置条件
- 拥有Google Workspace超级管理员权限,或被授予
admin.directory.application.readonly权限 - 在Google Cloud Console创建项目,启用Admin SDK Directory API
- 创建服务账号,下载JSON密钥并启用域范围委派,授予对应API权限
核心实现逻辑
使用Admin SDK Directory API的customer.applications.list接口,拉取所有已访问/授权的应用列表,再与你的Client ID列表匹配,提取应用名称和URL。接口返回字段对应关系:
- 应用名称 →
displayName - Client ID →
clientId - 应用URL →
homepageUrl(对应管理页面的App URL,部分应用可能无此字段)
Python代码示例
from google.oauth2 import service_account from googleapiclient.discovery import build # 配置参数 SCOPES = ['https://www.googleapis.com/auth/admin.directory.application.readonly'] SERVICE_ACCOUNT_KEY_PATH = 'your-service-account-key.json' ADMIN_EMAIL = 'admin@your-domain.com' # 替换为Workspace管理员邮箱 TARGET_CLIENT_IDS = [ '532352704633-6pkces9iboppp465idnovkcqtlsa8j7t.apps.googleusercontent.com', # 其他Client ID... ] # 初始化认证 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY_PATH, scopes=SCOPES ) delegated_creds = credentials.with_subject(ADMIN_EMAIL) # 调用API获取应用列表 service = build('admin', 'directory_v1', credentials=delegated_creds) apps_response = service.customer().applications().list(customer='my_customer').execute() apps = apps_response.get('applications', []) # 构建Client ID到应用信息的映射 client_id_mapping = {} for app in apps: if app['clientId'] in TARGET_CLIENT_IDS: client_id_mapping[app['clientId']] = { 'app_name': app['displayName'], 'app_url': app.get('homepageUrl', '无可用URL') } # 输出结果(可直接用于报表生成) for client_id, info in client_id_mapping.items(): print(f"Client ID: {client_id}") print(f"应用名称: {info['app_name']}") print(f"应用URL: {info['app_url']}\n")
注意事项
- 若部分应用未返回
homepageUrl,原因是该应用未在Google应用目录中完善信息,与管理页面显示逻辑一致 - 支持使用其他语言的Google API客户端库,或直接发送HTTP请求调用API
- 必须确保服务账号的域范围委派配置正确,否则会触发权限不足错误
内容的提问来源于stack exchange,提问作者Rory
相关产品推荐
相关产品推荐

