如何从Microsoft Graph获取对象的所有应用扩展?
获取Microsoft Graph对象的所有应用扩展
嘿,这个问题我刚好研究过!之前也纠结过怎么不用逐个写属性名就能拿到所有应用扩展,给你分享两种实用的方法,分场景来说:
1. 获取单个对象(如用户)的所有目标应用扩展
如果你只需要获取特定应用注册下的所有扩展属性,不用逐个指定扩展名称,可以在$select参数里使用通配符*来匹配该应用的所有扩展:
GET https://graph.microsoft.com/v1.0/users/{{OBJECT_ID}}?$select=extension_{{APP_ID_WITHOUT_GUIDS}}_*
关键注意点:
{{APP_ID_WITHOUT_GUIDS}}是去掉所有连字符的应用ID,比如原ID是a1b2c3d4-5678-90ef-ghij-klmnopqrstuv,要改成a1b2c3d4567890efghijklmnopqrstuv- 这个请求会返回该用户属于目标应用的所有扩展属性,不用手动列每个扩展名称,非常方便
如果你需要获取所有应用的扩展属性(不限于某个应用),可以用$select=*获取对象的全部属性,然后在客户端过滤出所有以extension_开头的属性:
GET https://graph.microsoft.com/v1.0/users/{{OBJECT_ID}}?$select=*
不过这种方式会返回大量默认属性,效率稍低,建议只在必要时使用。
2. 获取组成员的所有目标应用扩展
针对你提到的获取用户所属组成员的扩展属性场景,同样可以用通配符简化请求:
GET https://graph.microsoft.com/v1.0/users/{{OBJECT_ID}}/memberOf?$select=extension_{{APP_ID_WITHOUT_GUIDS}}_*
这个请求会返回该用户所有所属组的、属于目标应用的全部扩展属性,省去了逐个指定扩展名称的麻烦。
额外提示
- 确保你的应用已被授予对应的权限,比如访问用户需要
User.Read.All,访问组需要Group.Read.All等,具体权限取决于你操作的对象类型 - 如果你用的是开放扩展(Open Extensions)而非目录扩展(Directory Extensions),则需要使用
$expand=extensions来获取所有开放扩展,但这和你问题里提到的应用扩展不是同一类型哦
内容的提问来源于stack exchange,提问作者Justin Dearing
相关产品推荐
相关产品推荐

