使用Microsoft Graph查询全局地址列表

时间:2018-02-12 14:00:48

标签: microsoft-graph

我正在尝试使用Microsoft Graph查询全局地址列表。我已经使用并调整了https://github.com/microsoftgraph/console-csharp-snippets-sample.git的示例代码 - 但是,我仍然遇到了麻烦。我已经看过这篇文章 - Global Address List Graph API - 这表明我需要使用“/ contacts”端点。但是,当我使用Microsoft.Graph库时,我看不出这对我有何帮助。 Microsoft.Graph库中是否有一些方法或集合可以让我读取GAL?

2 个答案:

答案 0 :(得分:1)

“GAL”是MAPI概念,并不真正适用于Graph。使用Graph,您只需阅读公司Active Directory中的用户或联系人。通过组合这两个列表,您可以接近在MAPI客户端中在GAL中看到的内容。

为此,您可以将用户列为文档:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list

使用该库,我相信这会让你开始:

client.Users.Request().GetAsync();

对于联系人来说,使用Graph库会更加棘手。组织联系人仅在Microsoft Graph的测试版中受支持,不幸的是客户端库不支持。 (有关信息,请参阅this issue)。如果你有兴趣,Michael Mainer会做write up of how you can generate your own beta version of the library

有关查询组织联系人的信息,请访问:https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/orgcontact

答案 1 :(得分:0)

截至 2021 年末,似乎不是来自 Microsoft 的简单“导出全局地址列表”API。似乎有手动方法(例如使用 Exchange 管理界面),但没有任何编程方法。

下面是创建近似值的粗略练习(这可能足以满足您的需要)。更准确的练习可能是从官方客户端(例如 Outlook/Outlook Web/Exchange 管理界面)导出 GAL。在某些情况下,GAL 可能是特定于用户的,这可能会使 GAL 导出概念更加复杂。

GAL 导出练习:


API:

  • MS Graph API(可通过 HTTP 获得,例如 GET/POST)
    • Users
    • Groups
    • 上面的一些只允许单个记录查询访问某些属性 - 我需要获取整个列表,然后逐条遍历每个记录以获取所有需要的属性。
  • Exchange Powershell(可通过 Powershell 获得)

Azure Functions 可用于运行这些无服务器/“API 化”查询。 Azure 应用注册可用作 OAuth 应用,可授予访问上述权限的权限。 Microsoft Graph Explorer 可方便地测试 Graph 请求。

放在一起:

将数据集粉碎在一起,然后过滤掉字段。一些标志是:

  • hideFromAddressLists
  • hideFromOutlookClients
  • HiddenFromAddressListsEnabled
  • showInAddressList,
  • 您必须手动检查某些条件,例如
    • 如果没有预配计划(即未经许可)
    • 如果没有电子邮件地址