Я использовал Graph API для создания контактов и синхронизации между основной учетной записью и всеми учетными записями Office 365 нашей организации. Это работало хорошо до прошлого месяца или около того.
Мой процесс синхронизации включает в себя запрос определенной папки главной учетной записи для контактов, кэширование их, а затем просмотр списка целевых пользователей, создание контактов при необходимости. Получение списков контактов, создание папок контактов и удаление контактов все по-прежнему работает должным образом. Создание контакта возвращает «ErrorInternalServerError: Ссылка на объект не установлена для экземпляра объекта».
Я использовал поток client_credentials и проверил, что у моего приложения есть соответствующие учетные данные в панели администратора Azure AD. Ниже приведен объект JSON, который я размещаю для создания контакта. Это происходит независимо от контакта или целевого пользователя.
{
"categories": [],
"birthday": null,
"fileAs": "GPS 00 Bob, Todd",
"displayName": "GPS 00 Bob, Todd",
"givenName": "Todd",
"initials": "T.G.0.B.",
"middleName": "",
"nickName": null,
"surname": "GPS 00 Bob",
"title": "",
"yomiGivenName": null,
"yomiSurname": null,
"yomiCompanyName": null,
"generation": "",
"emailAddresses": [
{
"name": "Email",
"address": "[email protected]"}
],
"imAddresses": [
""],
"jobTitle": "Chief Financial Officer",
"companyName": "",
"department": "",
"officeLocation": null,
"profession": null,
"businessHomePage": null,
"assistantName": null,
"manager": null,
"homePhones": [
""],
"mobilePhone": "",
"businessPhones": [
""],
"homeAddress": {
"street": "",
"city": "",
"state": "",
"countryOrRegion": "",
"postalCode": ""},
"businessAddress": {
"street": "701 East Lumbar Ave",
"city": "Minot",
"state": "ND",
"countryOrRegion": "United States of America",
"postalCode": "68745"},
"otherAddress": {},
"spouseName": null,
"personalNotes": null,
"children": []
}
редактировать
Дополнительная информация: Я отправляю сообщение в определенную папку контактов с ее идентификатором. Вот пример URL: https://graph.microsoft.com/v1.0/users/91bbdb7b-3b41-474c-93c9-99b1da960c18/contactFolders/AAMkADFlNzQ5NGQ5LTEwNjYtNGFiZS04NDlhLTViOGE0YzMzZjI3OQAuAAAAAAA9YtgrncHYSKObisZl7JkCAQChpNwDV4FXRaJC6UF1HyyuAAAAAAFFAAA=/contacts
Правильно ли сформирован этот идентификатор contactFolder?
/редактировать
Сценарий написан на PHP, и я просто отбираю эти запросы. Любые мысли являются предложениями, будет принята с благодарностью. Дайте мне знать, будет ли полезна любая другая информация.
Спасибо!
После фильтрации полей контактов до минимума и последующего добавления их одно за другим, я обнаружил, что поле дня рождения было ошибочным. Похоже, что Graph API больше не принимает ноль значение для этого. Полное удаление поля, если день рождения не указан, похоже, решило проблему.
Я считаю это решенным. Возможно, документацию Graph API следует обновить, чтобы отразить этот факт? Кроме того, было бы разумно улучшить реакцию API на эту ошибку. «InternalServerError» не адекватно описывает причину.
Спасибо!
Других решений пока нет …