获取所有用户(+直接管理员,照片元数据和'AboutMe'等属性)

时间:2018-02-26 11:07:29

标签: microsoft-graph

到目前为止,我们使用了SharePoint内部部署自定义Web服务,该服务为所有用户(约15,000个)提供了包括aboutMeskills等在内的属性以及直接管理器。这项工作花了大约。 15分钟。 所有数据都存储在Lucene搜索索引中。

现在我们必须切换到O365。 我可以从Microsoft Graph获得所有需要的信息,但这需要太长时间(3 - 5小时):

  • 通过/v1.0/users(带分页)
  • 获取所有用户
  • 迭代收集和
    • 通过/v1.0/[user-id]/manager
    • 获取指定用户的管理员
    • 通过aboutMe
    • 为给定用户获取skills/v1.0/[user-Id]?$select=aboutMe,skills等属性

有没有有效的方法来完成这项任务?

1 个答案:

答案 0 :(得分:1)

理想情况下,您应该只需要按需要的数据调用Microsoft Graph,而不是尝试将其同步到您自己的数据库。

假设您无法做到这一点,您可以使用/delta端点(Get incremental changes for users)推断出这需要的时间。使用增量令牌时,您将只返回自上次请求以来已更改(添加,删除,编辑)的资源。所以你的第一次传球可能需要几个小时,但随后的传球需要几秒钟。

您可以控制哪些属性跟踪更改"反对使用$select查询参数。例如,如果您只关心displayName的更改,那么使用/v1.0/users/delta?$select=displayName将确保您只接收对该属性的更改。来自documentation

  

如果使用$select查询参数,则该参数指示客户端更喜欢仅跟踪$select语句中指定的属性或关系的更改。如果未选择的属性发生更改,则在后续请求之后,该属性更改的资源不会显示在增量响应中。

另外,请考虑batching requests来改进您的流程'整体表现。批处理允许您在单个请求中向Microsoft Graph发送多个查询,并在单个响应中获得完整的结果。