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

如何通过Google Admin SDK获取G Suite用户自定义属性?

如何在G Suite中获取用户配置文件的自定义属性?

我之前也碰到过类似的问题,其实核心是默认的Admin SDK调用不会返回自定义属性,得调整几个关键设置才行,一步步来解决:

1. 先明确自定义属性的存储位置

G Suite的自定义用户属性是绑定在自定义Schema下的,不是默认字段。你先去Google Admin控制台确认:

  • 进入「用户」→「用户设置」→「自定义用户信息」
  • 找到你创建的Department字段所属的Schema名称(比如可能叫EmployeeInfo或者你自己命名的其他名称),这个很关键,后面调用API要用到。

2. 调整API调用的参数

默认的users.get或users.list方法只返回基础用户数据(比如邮箱、全名),要获取自定义属性,必须指定以下两个参数之一:

方式一:使用projection=full

这个参数会返回用户的所有数据,包括自定义属性。示例代码(Python为例):

from googleapiclient.discovery import build
from google.oauth2 import service_account

# 初始化Admin SDK服务
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly']
SERVICE_ACCOUNT_FILE = 'your-service-account-key.json'

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# 必须指定域管理员账号做委托
delegated_creds = credentials.with_subject('admin@your-domain.com')
service = build('admin', 'directory_v1', credentials=delegated_creds)

# 获取单个用户,指定projection为full
user = service.users().get(userKey='target-user@your-domain.com', projection='full').execute()

# 提取自定义属性,替换成你的Schema名称和字段名
department = user.get('customSchemas', {}).get('EmployeeInfo', {}).get('Department')
print(f"用户部门:{department}")

方式二:使用fields参数精准指定返回字段

如果你不想获取全量数据,可以用fields指定需要的字段,包括自定义属性:

# 只请求邮箱、全名和自定义Schema数据
user = service.users().get(
    userKey='target-user@your-domain.com',
    fields='email,name,customSchemas'
).execute()

3. 检查权限是否足够

确保你的服务账号(或OAuth授权账号)拥有以下权限:

  • https://www.googleapis.com/auth/admin.directory.user.readonly(只读权限足够)
  • 同时,在Google Admin控制台的「API控制」里,已经启用了Admin SDK,并且给服务账号授权了相应的域范围权限。

4. 排查常见坑

  • 确认目标用户的Department字段确实有值:有些用户可能没填写该属性,自然返回null,先去Admin控制台查看该用户的自定义信息是否已填写。
  • 注意字段名和Schema名称的大小写:API返回的键是区分大小写的,要和Admin控制台里的名称完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:18