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

joy*_*nce 0 microsoft-graph-api

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

但是当我用自己的帐户登录时,它就被破坏了。

当我请求时:

https://graph.microsoft.com/v1.0/me/contacts/{Id}/photo/$value
Run Code Online (Sandbox Code Playgroud)

它返回:

{
    "error": {
        "code": "ErrorItemNotFound",
        "message": "The specified object was not found in the store.",
        "innerError": {
            "request-id": "ad665ca9-9585-4f7a-9dd1-803061d8baba",
            "date": "2018-10-09T15:55:54"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道原因,这让我很困惑。

Mar*_*eur 5

调用/v1.0/me/contacts/{id}/photo/$value只会返回一张存在的照片(即照片已添加到 Outlook 中的联系人中)。如果没有添加照片,则会返回HTTP 404 - Not Found异常。

您可以先调用来测试照片是否存在,而不是处理异常/v1.0/me/contacts/{id}/photo/。如果附上照片的话。这将返回所附照片的元数据 ( mediaContentType, height, width)。如果返回的结果为空,那么您就知道没有可用的照片。

请记住,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检索图像。如果没有,则没有可用的图像。