无法通过API获取照片,返回404

时间:2018-10-09 15:58:28

标签: microsoft-graph

当我尝试使用Graph Explorer检索照片时,使用示例帐户效果很好。

但是当我使用自己的帐户登录时,该帐户已损坏。

当我请求时:

Out-Gridview

它返回:

$sheet = $collectOutput | Export-Excel -Path 'C:\Users\username\Desktop\testing.xlsx' -PassThru -AutoSize

$sheet.Sheet1.Column(1) | Set-ExcelRange -VerticalAlignment Center
$sheet.Sheet1.Column(2) | Set-ExcelRange -WrapText
$sheet.Sheet1.Column(3) | Set-ExcelRange -WrapText
$sheet.Sheet1.Column(4) | Set-ExcelRange -WrapText

$sheet.Save()
$sheet.Dispose()

我不知道原因,这使我感到困惑。

1 个答案:

答案 0 :(得分:3)

呼叫/v1.0/me/contacts/{id}/photo/$value仅返回一张已存在的照片(即,照片已添加到Outlook中的“联系人”)。如果未添加照片,它将返回HTTP 404 - Not Found异常。

您可以通过首先调用/v1.0/me/contacts/{id}/photo/来测试照片的存在,而不是处理异常。如果附有照片。这将返回附件照片的元数据(mediaContentTypeheightwidth)。如果结果返回空白,则说明没有可用的照片。

请记住,Outlook本身会从多个位置提取个人资料照片。例如,如果没有图像附加到联系人,并且它们属于同一组织,则Outlook将尝试从联系人的帐户中提取照片。只要您请求范围User.ReadBasic.All,就可以复制此功能。

整个过程将是这样的:

  1. 致电/v1.0/me/contacts/{id}/photo/

  2. 如果存在图像,请调用/v1.0/me/contacts/{id}/photo/$value来检索图像。如果没有,请继续。

  3. 使用联系人中的emailAddress,呼叫/v1.0/users/{emailAddress}/photo

  4. 如果存在图像,请调用/v1.0/users/{emailAddress}/photo/$value来检索图像。如果没有,则没有可用的图像。