Не удается развернуть вновь созданное открытое расширение в MS Graph - PullRequest
2 голосов
/ 14 октября 2019

Версия TLDR: это было вызвано тем, что перед вызовом Graph не кодировалась строка запроса Graph, а не проблема API!

Я создал новое расширение Open для конкретного пользователя. Я могу прочитать пользователя или, в частности, Open Extension, но я не могу использовать $ expand, чтобы вернуть пользователя с Open Extension вместе в одном вызове.

Я использую Аутентификацию приложения в AAD (ссекрет), и это может иметь или не иметь какое-либо отношение к этому. Каждый найденный пример использует ярлык /v1.0/me в Graph Explorer.

РЕДАКТИРОВАТЬ: я быстро получил ответ, который не принял это во внимание. MS Graph Explorer позволяет только аутентификацию через учетную запись пользователя и не помогает мне

Я могу последовательно добавлять, читать и удалять расширения. Единственная проблема заключается в расширении атрибутов расширений при чтении.


$uri = "https://graph.microsoft.com/v1.0/users/user@domain.com.au/extensions"

$body = '{
    "@odata.type":"microsoft.graph.openTypeExtension",
    "extensionName":"au.com.domain.customAttributes",
    "shoesize":"large"
}'

$query = Invoke-RestMethod -Method Post -Uri $uri -ContentType "application/json" -Body $body -Headers @{Authorization = "Bearer $token"} -ErrorAction Stop

#Modify an existing custom attribute
$uri = "https://graph.microsoft.com/v1.0/users/user@domain.com.au/extensions/au.com.domain.customAttributes"

$body = '{
    "shoesize":"small"
}'

$query = Invoke-RestMethod -Method Patch -Uri $uri -ContentType "application/json" -Body $body -Headers @{Authorization = "Bearer $token"} -ErrorAction Stop

## Read user without extension attributes
$uri = "https://graph.microsoft.com/v1.0/users/user@domain.com.au"
$user = Invoke-RestMethod -Method Get -Uri $uri -Headers @{Authorization = "Bearer $token"} -ErrorAction Stop
Write-Host $user

## Read extension attributes only in separate call
$uri = "https://graph.microsoft.com/v1.0/users/user@domain.com.au/extensions/au.com.domain.customAttributes"
$customAttributes = Invoke-RestMethod -Method Get -Uri $uri -Headers @{Authorization = "Bearer $token"} -ErrorAction Stop
Write-Host $customAttributes

## Delete a custom extention
$uri = "https://graph.microsoft.com/v1.0/users/user@domain.com.au/extensions/au.com.domain.customAttributes"
$customAttributes = Invoke-RestMethod -Method DELETE -Uri $uri -Headers @{Authorization = "Bearer $token"} -ErrorAction Stop

Write-Host $customAttributes

Мне нужно иметь возможность использовать фильтр для получения 100 пользователей из 55000, , включая всех их атрибутов открытого расширения.

РЕДАКТИРОВАТЬ: Я подозреваю, что это может быть проблема, связанная с параметрами запроса, и я думаю, я буду спать на этом, прежде чем переписать вопрос, может быть?

Это работает, например:

$uri = "https://graph.microsoft.com/v1.0/users"
$users = Invoke-RestMethod -Method Get -Uri $uri -Headers @{Authorization = "Bearer $token"}  -ContentType "application/json" -ErrorAction Stop 

Это дает мне первые 100 пользователей для моего арендатора. Добавление любого параметра запроса вообще нарушает запрос. Я получаю сообщение об ошибке 400, даже если, например, тот же вызов Graph в Graph Explorer дает значимый ответ.

Я использую Invoke-RestMethod в powershell для выполнения вызовов Graph ... Я подозреваю, что мне нужнопопробуйте другой способ совершения звонков или попробуйте передать дополнительные параметры Invoke-RestMethod

1 Ответ

1 голос
/ 15 октября 2019

, но я не могу использовать $ expand, чтобы вернуть пользователя с открытым расширением вместе в одном вызове

Расширения отображаются в Microsoft Graph в коллекции расширений. Таким образом, вы можете использовать $ expand, чтобы вернуть пользователей с открытым расширением вместе в одном вызове.

https://graph.microsoft.com/v1.0/users?$expand=extensions

Я создал одно и то же расширение для пользователя. Я могу найти его в ответе.

enter image description here

Обновление:

Я пытался с потоком учетных данных клиента,это тоже работает. Вот подробные шаги.

  1. Зарегистрируйте приложение и предоставьте разрешение User.ReadWrite.All, не забудьте предоставить согласие администратора.

enter image description here

2. получить токен доступа

enter image description here

3. вызвать API с токеном доступа

enter image description here

Обновление: запустить его с помощью powershell

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...