Компании, в которой я работаю, необходимо разработать API, который будет экспортировать контакты Office 365 и импортировать их в контакты нашего профиля пользователя. Это работает как своего рода демон.
Я нашел Microsoft Graph API и работал над ней несколько дней, чтобы запустить ее, но функция контактов GET, похоже, не работает для меня.
Я использую ресурс graph.microsoft.com
и пытается связаться с
/users/{id}/contacts
используя PHP cURL.
stdClass Object
(
[error] => stdClass Object
(
[code] => ResourceNotFound
[message] => Resource could not be discovered.
[innerError] => stdClass Object
(
[request-id] => 134b1964-9421-4fce-84ba-aca1525c705e
[date] => 2017-03-20T15:35:39
)
)
)
Я получаю токен доступа очень хорошо (мое приложение в настоящее время запрашивает все разрешения на чтение / запись, чтобы избежать зависания из-за отсутствия привилегий, и они были разрешены учетной записью администратора).
Я обнаружил, что причина этого, вероятно, в том, что пользовательский ответ JSON не полностью отформатирован, как это должно быть. Документация Microsoft показывает полное представление ресурса пользователя. У меня, похоже, отсутствуют все отношения с другими ресурсами, например, «контакты», которые мне нужны. Вот JSON, который я получаю из Graph API, используя /users/{id}
:
stdClass Object
(
[@odata.context] => https://graph.microsoft.com/beta/$metadata#users(contacts)/$entity
[id] => e4007399-90fb-489d-a0f8-2c577f219638
[accountEnabled] => 1
[assignedLicenses] => Array
(
)
[assignedPlans] => Array
(
)
[businessPhones] => Array
(
)
[city] =>
[companyName] =>
[country] =>
[department] =>
[displayName] => Loic Didelot
[givenName] => Loic
[jobTitle] =>
[mail] =>
[mailNickname] => vendors_mixvoip.com#EXT#
[mobilePhone] =>
[onPremisesDomainName] =>
[onPremisesImmutableId] =>
[onPremisesLastSyncDateTime] =>
[onPremisesSecurityIdentifier] =>
[onPremisesSamAccountName] =>
[onPremisesSyncEnabled] =>
[onPremisesUserPrincipalName] =>
[passwordPolicies] =>
[passwordProfile] =>
[officeLocation] =>
[postalCode] =>
[preferredLanguage] =>
[provisionedPlans] => Array
(
)
[proxyAddresses] => Array
(
)
[refreshTokensValidFromDateTime] => 2017-03-14T09:13:10Z
[showInAddressList] =>
[imAddresses] => Array
(
)
[state] =>
[streetAddress] =>
[surname] => Didelot
[usageLocation] =>
[userPrincipalName] => vendors_mixvoip.com#EXT#@vendorsmixvoip.onmicrosoft.com
[userType] => Member
)
Я не смог найти, как решить эту проблему, когда я пытаюсь найти эту проблему, я получаю результаты для «пользовательских свойств», которые можно выбрать с помощью /users/{id}?$select=customPropertyName
, Это не работает для /users/{id}?$select=contacts
,
Заранее спасибо за помощь.
Microsoft Graph Explorer — ваш друг (простой способ опробовать REST-запросы к API): https://developer.microsoft.com/en-us/graph/graph-explorer
Также, если вы посмотрите на первую страницу нашего обзора документации, есть несколько примеров запросов (хотя контакты не входят в их число), которые дадут вам несколько идей: https://developer.microsoft.com/en-us/graph/docs
В любом случае — звонок, который вам нужно сделать, это
GET https://graph.microsoft.com/v1.0/users/{id}/contacts
Возвращает набор / коллекцию личных контактов пользователя / {id}. Тип ресурса (для коллекции) contact
и не user
,
Для получения дополнительной информации о типе ресурса контактов и списке контактов см. Следующие разделы:
https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/contact
https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_contacts
Надеюсь это поможет,
Других решений пока нет …