#microsoft-graph-api
#microsoft-graph-api
Вопрос:
Я вызываю me/contacts/{id}/photo
, и ответы не соответствуют тому, что определено в документах.
Согласно документам, две вещи не соответствуют тому, что я вижу:
-
Когда у контакта нет фотографии, в нем указывается, что вы получите пустой json paylod, однако я получаю
404
ответ с этой ошибкойCode: ErrorItemNotFound Message: The specified object was not found in the store.
-
Когда для контакта есть фотография, в статье говорится, что будет
@odata.mediaEtag
, однако в полезной нагрузке, которую я получаю обратно, ее нет. Ниже мой ответ:(*map[string]interface {})(0xc42014a028)((len=5) { (string) (len=6) "height": (float64) 360, (string) (len=5) "width": (float64) 360, (string) (len=14) "@odata.context": (string) (len=243) "https://graph.microsoft.com/v1.0/$metadata#users('REDACTED')/contacts('REDACTED')/photo/$entity", (string) (len=23) "@odata.mediaContentType": (string) (len=10) "image/jpeg", (string) (len=2) "id": (string) (len=7) "360X360" })
Проблема № 1 не влияет на меня, поскольку я могу легко справиться с 404
. Меня больше беспокоит проблема № 2, поскольку я хотел бы etag
, чтобы я мог отслеживать, было ли изменено изображение, и загружать его только тогда, когда оно было изменено.
Я смог настроить OAuth, запустить API-интерфейсы и успешно загрузить контакты и фотографии, следуя документам, поэтому я не уверен, чего мне не хватает.
Ответ №1:
Разные конечные точки могут возвращать немного разные данные (например /me/photo
, vs /me/{id}/photo
vs /groups/{id}/photo
). Единственные свойства, в которых вы можете быть уверены, будут указаны в profilePhoto
resoruce:
{
"id": "240X240",
"height": 240,
"width": 240
}
Возможно, вы сможете использовать eTag
для самого contact
себя (изменение фотографии контакта в Outlook должно отображаться как изменение контакта), используя /me/contacts/{id}?$select=id,lastModifiedDateTime
:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('{id}')/contacts(id,lastModifiedDateTime)/$entity",
"@odata.etag": "W/"EQAAABYAAAAiIsqMbYjsT5e/T7KzowPTAAAYc8Bf"",
"id": "{id}",
"lastModifiedDateTime": "2017-09-04T15:54:02Z"
}