Версия 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