在Outlook中,我可以查找组织中的所有用户,包括电话号码,地址等。 我想使用EWS我可以做同样的事情...... 使用Azure AD图形(https://graph.windows.net)我也可以在所有(GAL)用户上获得所有(!)属性 - 无需选择较小的属性子集......
在Microsoft Graph(https://graph.microsoft.com)中,我可以获得所有用户(GAL),但不能获得电话号码,标题等所有属性,而无需管理员允许访问...为什么这不同(更受限制)其他API?
离。许可; Directory.AccessAsUser.All(以登录用户身份访问目录)
在Microsoft Graph中使用/ me / people(在预览中)我可以获得组织中许多用户的所有属性 - 但不是全部。而且我可能会得到一些我最近的同事不能的用户(为什么? - 它仍然是错误的)
每个人都告诉您使用Microsoft Graph,但似乎比旧API更受限制
答案 0 :(得分:0)
我有兴趣了解您所描述的限制性质。在大多数情况下(与Directory / Azure AD相关),Microsoft Graph公开了与Azure AD Graph相同的权限模型保护的相同数据。有关可用用户权限及其允许权限的详细信息,请参阅https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference#user-permissions。
您可能在Microsoft Graph中看到的是,当您查询v1.0中设置的/ users实体(即GET https://graph.microsoft.com/v1.0/users
)时,Microsoft Graph默认情况下仅返回一组用户属性。 user
实体类型非常大,并且一直在增长 - 它有超过40个属性和25个导航属性。序列化和反序列化大型对象,尤其是在分页集合对于客户端和Microsoft Graph服务而言可能是昂贵且不具有性能的时候。因此我们返回一个默认集。如果您需要其他属性,则需要使用$select
参数。例如:GET https://graph.microsoft.com/v1.0/users?$select=displayName,givenName, officeLocation,postalCode,state
。这里记录了这一点:例如https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_get,但我们正在努力对该领域的文档进行一些改进。如果要查看Microsoft Graph user
实体类型公开的完整属性集,请在此处查看架构:https://graph.microsoft.com/v1.0/ $ metadata。
[注意:Azure AD Graph API不支持$ select,因此我们始终返回完整集合。
人员API - ../me/people
是关于您(已登录用户)最常与之通信的人 - 它还可能包含您组织外部的人员。因此,每个用户(甚至是同事)的人员列表可能是特定的和不同的。它也不是组织中用户的完整目录。
我也想了解为什么你会看到同意方面的差异 - Directory.AccessAsUser.All总是要求管理员同意网络应用程序(适用于Microsoft和Azure AD Graph)。< / p>
希望这有帮助,