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

Google Workspace超级管理员如何获取指定账号的resourceName

解决方案

一、正确获取目标账号的resourceName

无需使用people.listDirectoryPeople,直接通过Admin SDK Directory API获取用户ID后拼接即可:

  1. 新增Scope:https://www.googleapis.com/auth/admin.directory.user.readonly
  2. 调用Directory API获取用户信息:
    from googleapiclient.discovery import build
    
    # 初始化Directory API客户端
    directory_service = build('admin', 'directory_v1', credentials=creds)
    
    # 获取单个用户的resourceName(替换为目标邮箱)
    user_info = directory_service.users().get(userKey='press@yourdomain.org').execute()
    resource_name = f'people/{user_info["id"]}'
    
    # 批量获取域内所有用户的resourceName
    users = directory_service.users().list(domain='yourdomain.org', maxResults=1000).execute()
    for user in users.get('users', []):
        print(f"邮箱: {user['primaryEmail']}, ResourceName: people/{user['id']}")
    

二、正确获取目标账号的Google Contacts

作为管理员,直接用自身账号调用connections.list无法访问其他用户的联系人,必须通过域范围授权模拟目标用户调用API:

  1. 配置域范围授权:

    • 在Google Cloud控制台为你的服务账号启用域范围授权
    • 在Google Workspace管理后台,将https://www.googleapis.com/auth/contacts.readonly权限授予该服务账号
  2. 模拟目标用户调用API:

    from google.oauth2 import service_account
    from googleapiclient.discovery import build
    
    SCOPES = ['https://www.googleapis.com/auth/contacts.readonly']
    SERVICE_ACCOUNT_FILE = 'path/to/your/service-account-key.json'
    
    # 模拟目标用户(替换为目标邮箱)
    delegated_creds = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES, subject='press@yourdomain.org'
    )
    
    # 初始化People API客户端
    people_service = build('people', 'v1', credentials=delegated_creds)
    
    # 获取目标用户的联系人(模拟用户时用people/me即可)
    connections = people_service.people().connections().list(
        resourceName='people/me',
        pageSize=1000,
        personFields='names,emailAddresses,phoneNumbers'
    ).execute()
    
    # 遍历处理联系人数据
    for contact in connections.get('connections', []):
        print(contact.get('names', [{}])[0].get('displayName'))
    

三、关于你之前的API调用错误

people.listDirectoryPeople用于获取域内用户的公开目录信息(而非个人联系人),即便调整目录共享设置,也无法满足你获取用户私人联系人的需求。另外你之前的参数sources设置为DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE,若仅用于获取目录用户信息,应改为DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT,但此接口对你的核心需求无帮助。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:07:03