Получить все файлы в других Onedrive в MS Graph - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь перечислить все файлы в OneDrive другого пользователя.

Я звоню GET /users/{user-id}/drive/items/{item-id}/children, но моя проблема в том, что я не знаю, как получить {item-id}.

Я пытался использовать https://graph.microsoft.com/v1.0/users/{userid}/drives, но он не показывает идентификаторы элементов.

Впоследствии, как только я получу идентификатор, я буду использовать команду копирования POST /users/{userId}/drive/items/{itemId}/copy для копирования элементов.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Если вы не знаете идентификатор или путь для DriveItem, вам нужно начать с root из Drive и перемещаться по структуре папок, пока не найдете нужные вам файлы. находясь в поиске.

Ваш первый звонок будет /users/{id|userPrincipalName}/drive/root/children?$select=id,name,folder,file. Это выведет список детей id, name, а также данные folder или file (в зависимости от типа элемента) из папки root:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('id')/drive/root/children(id,name,folder,file)",
    "value": [
        {
            "@odata.etag": "\"{etag},1\"",
            "id": "folderId",
            "name": "My Folder",
            "folder": {
                "childCount": 10
            }
        },
        {
            "@odata.etag": "\"{etag},1\"",
            "id": "fileId",
            "name": "filename.ext",
            "file": {
                "mimeType": "type",
                "hashes": {
                    "quickXorHash": "hash"
                }
            }
        }
    ]
}

Затем вы выполняете один и тот же вызов для каждой из папок, чтобы получить их дочерние элементы, повторяя шаблон, пока не найдете нужный файл:

/users/{id|userPrincipalName}/drive/items/{folderId}/children?$select=id,name,folder,file`

В качестве альтернативы, вы можете просто поиск файла с использованием /users/{id|userPrincipalName}/drive/root/search(q='{search-text}').

0 голосов
/ 06 апреля 2020

Вам, вероятно, нужно запросить root, чтобы получить childID для файлов / папок

GET https://graph.microsoft.com/v1.0/users/{user-id}/drive/root/children
...