如何通过Microsoft Graph API访问MS Delve中添加的自定义配置文件字段?
解决Delve自定义配置文件字段无法通过Microsoft Graph API访问的问题
我之前也遇到过一模一样的坑!Delve里的自定义用户配置文件字段其实是存在SharePoint用户配置文件属性体系里的,和Microsoft Graph的Extensions完全是两回事,这也是很多人绕弯路的原因。下面是我亲测有效的解决步骤:
1. 先确认字段的「内部名称」
Delve里显示的友好名称和SharePoint后台存储的内部Key往往不一样(比如你创建的"员工编号",内部可能是EmployeeID_1)。你可以通过Graph代理调用SharePoint接口,获取用户的所有配置文件属性,找到目标字段的真实Key:
GET https://graph.microsoft.com/v1.0/sites/{你的租户域名}.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='i:0#.f|membership|你的用户邮箱'
在返回的d/Properties数组里,找到对应自定义字段的Key值,这才是后续调用需要用到的名称。
2. 通过Graph API调用SharePoint用户配置文件接口
Microsoft Graph本身没有直接暴露所有SharePoint用户配置文件属性的端点,但可以通过Graph的SharePoint站点代理,调用原生的PeopleManager接口来获取数据:
- 单独获取某个属性的请求示例:
GET https://graph.microsoft.com/v1.0/sites/{你的租户域名}.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v, propertyName='{刚才拿到的内部Key}')?@v='i:0#.f|membership|你的用户邮箱'
3. 检查应用权限是否达标
确保你的Graph应用已被授予以下权限之一(根据认证方式选择):
- 委派权限:
User.Read.All或Sites.Read.All - 应用权限:
User.Read.All或Sites.Read.All
权限需要在Azure AD应用注册里添加,并完成管理员同意流程。
4. 确认SharePoint端的字段配置
登录SharePoint管理中心,找到「用户配置文件属性」并编辑你的自定义字段:
- 勾选「是否在搜索中索引此属性」
- 确认「用户可以查看此属性」的权限设置正确(比如允许所有用户查看)
如果这些开关没打开,API大概率无法返回字段值。
为什么Extensions的方法没用?
你提到查了很多Extensions资料,但Delve的自定义字段不属于Graph的Open Extensions或Schema Extensions范畴——它是SharePoint生态专属的用户配置文件属性,所以Extensions相关的方案自然不适用。
内容的提问来源于stack exchange,提问作者idealbrandon
相关产品推荐
相关产品推荐

