Microsoft.Graph метод getByIds не возвращает полные объекты, содержащие все их свойства - PullRequest
0 голосов
/ 14 января 2020

В моем проекте я использовал GetByIds метод Microsoft.Graph API ( ссылка ) со строкой выбора, и он работал нормально и возвращал все свойства, упомянутые в строке выбора , Но недавно он перестал работать и не возвращает полные объекты, содержащие все их свойства, указанные в строке выбора. Даже если я не предоставляю Select, свойства возвращаются не полностью, особенно те, которые мне нужны, например accountenabled, businessphones, city, companyname, country, department, jobtitle , Этот метод очень важен для моего проекта, и Microsoft провалила его в своих API-интерфейсах Microsoft.Graph. Пожалуйста, кто-нибудь может помочь мне найти альтернативу этому методу, который берет список идентификаторов пользователей и возвращает все их свойства? Есть ли какие-либо ETA от Microsoft, чтобы исправить эту проблему с помощью этого метода "GetByIds"?

Мой код выглядит следующим образом:

var directoryObjects = new List<Microsoft.Graph.DirectoryObject>();
var types = new List<String>()
            {
                "user"
            };
string select ="displayname,mail,mailnickname,onpremisessecurityidentifier,onpremisessyncenabled,proxyaddresses,id,odatatype,accountenabled,businessphones,city,companyname,country,department,givenname,imaddresses,jobtitle,mobilephone,onpremisesimmutableid,passwordpolicies,officelocation,postalcode,preferredlanguage,state,streetaddress,surname,usagelocation,userprincipalname,usertype";

var responseWithSelect = _graphServiceClient.DirectoryObjects.GetByIds(identitiesList,types).Request().Select(select).PostAsync().Result;

var responseWithoutSelect = _graphServiceClient.DirectoryObjects.GetByIds(identitiesList,types).Request().PostAsync().Result;

1 Ответ

0 голосов
/ 14 января 2020

Так же, как известная проблема показывает:

Запрос объектов с помощью функции Получить объекты каталога из списка идентификаторов должен вернуть полные объекты. Однако в настоящее время пользовательские объекты в конечной точке v1.0 возвращаются с ограниченным набором свойств. В качестве временного обходного пути, когда вы используете операцию в сочетании с параметром запроса $ select, будут возвращены более полные пользовательские объекты. Такое поведение не соответствует спецификациям OData. Поскольку это поведение может быть обновлено в будущем, используйте этот обходной путь только тогда, когда вы предоставите $ select = со всеми интересующими вас свойствами, и только если допустимы будущие критические изменения этого обходного пути.

Я использовал Fiddler для мониторинга запросов. И я обнаружил, что на самом деле запрос был:

POST https://graph.microsoft.com/v1.0/directoryObjects/microsoft.graph.getByIds?$select=displayname,mail,mailnickname,onpremisessecurityidentifier,onpremisessyncenabled,proxyaddresses,id,odatatype,accountenabled,businessphones,city,companyname,country,department,givenname,imaddresses,jobtitle,mobilephone,onpremisesimmutableid,passwordpolicies,officelocation,postalcode,preferredlanguage,state,streetaddress,surname,usagelocation,userprincipalname,usertype HTTP/1.1
SdkVersion: Graph-dotnet-1.18.0
FeatureFlag: 0000004F
Cache-Control: no-store, no-cache
Authorization: Bearer eyJ0eXAiOiJKV1Qi*****************X5Q
Accept-Encoding: gzip
Content-Type: application/json
Host: graph.microsoft.com
Content-Length: 65
Expect: 100-continue

{"ids":["ab6d4cd6-fc2d-40c7-a676-f8773aebfb5f"],"types":["user"]}

Однако в ответе не все необходимые свойства были возвращены. Даже displayname не был возвращен. Я проверил дальше, и я нашел фактическое имя свойства displayName. Итак, я изменил его на правильный и смог вернуть displayName.

Итак,

  1. сам API имеет некоторые известные проблемы, которые не позволяют ему возвращать запрошенные значения.

  2. строка выбора теперь чувствительна к регистру.

Вы можете изменить свои коды соответствующим образом, чтобы посмотреть, поможет ли это.

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