Я пытаюсь расширить все элементы диска MS Teams (библиотека документов SharePoint) с помощью Graph API.
Я могу получить доступ к команде (группе), но не могу напрямую расширить коллекцию Items. Было бы здорово, если бы это было возможно, поэтому мне не нужен другой запрос для этого (производительность!).
Согласно документации, есть опция $ expand =, в C# у меня есть Expand () метод расширения. К сожалению, я не могу найти ни одного рабочего примера, как его использовать. Что ж, в официальной документации есть один пример:
string messageId = "<guid>";
Message message = await graphClient.Me.Messages[messageId]
.Request()
.Expand("attachments")
.GetAsync();
Но я не могу успешно воспроизвести его. Свойством должно быть «Items», поэтому я думаю, мне следует использовать «items» в нижнем регистре (но я также пробовал это с «Items»).
Вот teamsDrive
, когда я не буду ничего расширять , вы видите, что свойства - "Null" (в нем должны быть элементы, документы присутствуют в библиотеке):
teamDrive
{Microsoft.Graph.Drive}
Activities [IDriveActivitiesCollectionPage]:null
AdditionalData [IDictionary]:Count = 3
Bundles [IDriveBundlesCollectionPage]:null
CreatedBy:{Microsoft.Graph.IdentitySet}
CreatedByUser [User]:null
CreatedDateTime:{30/05/2020 23:46:46 +00:00}
Description [string]:""
DriveType [string]:"documentLibrary"
ETag [string]:null
Following [IDriveFollowingCollectionPage]:null
Id [string]:"b!QXf1ydGT80WWzfKB0A5IvAkI2isDR2NEh9jgSseDzmFpXz0eAriVS6TXSBEiZhVP"
Items [IDriveItemsCollectionPage]:null
LastModifiedBy [IdentitySet]:null
LastModifiedByUser [User]:null
Итак, я попробовал следующее:
var teamDrive = await graphClient.Groups[group.Id].Drive.Request().Expand("items").GetAsync();
Но это дает мне исключение:
Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: invalidRequest
Message: The request is malformed or incorrect.
Inner error:
AdditionalData:
request-id: 93ab7efd-0a33-4ff0-800e-d7e95acd8eb4
date: 2020-06-17T08:41:39
ClientRequestId: 93ab7efd-0a33-4ff0-800e-d7e95acd8eb4
at Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
Я использую конечную точку BETA Graph (https://graph.microsoft.com с использованием токена доступа, полученного из https://login.microsoftonline.com/ {наш идентификатор клиента }) с пакетом NuGet Microsoft.Graph.Beta (версия 0.18.0-preview - последняя версия).
Обратите внимание, что я не использую в этом запросе какие-либо операторы select или filter, как уже упоминалось другими что это запрещено при расширении: Расширение и фильтрация MS Graph API не работает