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 获取联系人时,此字段不存在
因此,不受欢迎的答案是,截至今天,这是不支持的,您应该对该功能投赞成票。
这个问题目前还不是一个好的答案......