如何通过API获取Azure DevOps所有用户的联系邮箱
获取Azure DevOps所有用户联系邮箱的解决方案
问题背景
使用https://vssps.dev.azure.com/{{organization}}/_apis/graph/users API获取的mailAddress并非用户的联系邮箱;调用https://app.vssps.visualstudio.com/_apis/profile/profiles/me能拿到自己的正确邮箱,但批量请求https://app.vssps.visualstudio.com/_apis/profile/profiles时收到不支持GET方法的错误。
可行方案
方案1:Graph API + 单个Profile查询
获取所有用户的唯一标识
调用Graph Users API获取组织内所有用户的subjectDescriptor(用户唯一标识):GET https://vssps.dev.azure.com/{{organization}}/_apis/graph/users?api-version=7.1-preview.1返回结果中每个用户的
subjectDescriptor字段是后续查询的关键。逐个查询用户联系邮箱
对每个用户的subjectDescriptor,调用Profile API获取联系邮箱:GET https://vssps.dev.azure.com/{{organization}}/_apis/profile/profiles/{subjectDescriptor}?api-version=7.1-preview.3返回结果的
emailAddress字段即为目标联系邮箱。注意:需确保调用API的身份拥有**Profile (Read)**权限(如PAT需勾选
profile的read权限)。
方案2:使用Azure DevOps CLI批量获取
若使用Azure DevOps CLI,可直接执行以下命令一键导出:
az devops user list --org https://dev.azure.com/{{organization}} --output json | jq '.[] | {name: .displayName, email: .emailAddress}'
前提:已安装Azure CLI并登录(执行az devops login完成身份验证)。
方案3:批量Profile查询(减少请求次数)
批量Profile接口不支持GET,需通过POST请求传入用户subjectDescriptor列表:
- 请求URL:
https://vssps.dev.azure.com/{{organization}}/_apis/profile/profiles?api-version=7.1-preview.3 - 请求方法:POST
- 请求体(JSON):
此方法可一次性获取多个用户的资料,适合用户量较大的场景。{ "descriptors": ["subjectDescriptor_1", "subjectDescriptor_2", "..."] }
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

