提问者:小点点

MS 图形 API - 获取联系人时使用展开=照片


https://graph.microsoft.com/v1.0/me/contacts/{id}?$expand=photo

应返回一个联系人对象,其中包含一个字段,说明联系人是否有照片

这已经在这里和这里进行了讨论,并且响应是这是不可能的,因为“photo”具有二进制响应,而获取联系人终结点返回 json。

但是,对于联系人配置文件照片,有两个单独的endpoint:

GET /me/contacts/{id}/photo/$value

以二进制流的形式返回照片本身

GET /me/contacts/{id}/photo

返回联系人照片的元数据 - 这对于确定该联系人是否有照片非常有用

顺便说一下,提供上述“$expand”选项不会使 API 调用失败,它会将以下标头添加到 JSON 响应中:“@odata.context”:“https://graph.microsoft.com/v1.0/$metadata#users('myemail@example.com')/联系人(照片())/$entity”,但是没有字段添加到 JSON 对象中可以帮助我们确定该联系人是否有照片。

一些背景:

帐户中可能有数千个联系人,如果您想列出所有联系人,则不需要太多的网络调用,因为您可以使用:

/me/contacts/microsoft.graph.delta

带标题:首选=odata.maxpagesize=300

但是,如果您想显示这些联系人的照片,则无法一次显示多个联系人的照片,如果您使用批处理,则一次最多可以执行4个联系人,这可能会导致数千次API调用,其中大多数可能会返回404,因为联系人没有照片。使用 $expand 添加照片存在字段将解决此问题,并允许我们大大减少 API 调用

另一点让我认为这应该是 API 支持的 - 在联系人示例的 JSON 表示中,它以:

"photo": { "@odata.type": "microsoft.graph.profilePhoto" }

但是当我从 API 获取联系人时,此字段不存在


共1个答案

匿名用户

因此,不受欢迎的答案是,截至今天,这是不支持的,您应该对该功能投赞成票。

这个问题目前还不是一个好的答案......