Один диск. MS Graph API. Ошибка перемещения файла в корень диска: «Один из предоставленных аргументов недопустим» - PullRequest
0 голосов
/ 21 января 2019

У меня есть приложение, которое использует MS Graph API для onedrive.Когда я пытаюсь переместить файл в корень диска из какой-либо папки, у меня появляется сообщение об ошибке «Один из предоставленных аргументов недопустим».

Но тот же код отлично работает для «отдельных» учетных записей onedrive, проблема заключается в том, чтотолько для OneDrive для бизнес-аккаунтов.Кроме того, перемещение в любую другую папку работает нормально.

Я отправляю запрос PATCH o переместить файл.

Для свободного onedrive тело запроса выглядит как

(
    [parentReference] => 
        (
            [path] => //drives/68XXXXX7f7f7d7c/root
        )
)

thisработает.но тот же код для oneDrive для бизнеса терпит неудачу

(
    [parentReference] => 
        (
            [path] => //drives/b!-0dIs3JX..TRUNCATED...0_oR2A...L0PY/root
        )
)

Это выдает ошибку "Один из предоставленных аргументов недопустим"

Что это может быть?Есть идеи?Я следую за документами здесь https://docs.microsoft.com/en-us/graph/api/driveitem-move?view=graph-rest-1.0

1 Ответ

0 голосов
/ 21 января 2019

Эта проблема отмечена в документации :

Примечание. При перемещении элементов в корень диска ваше приложение не может использовать синтаксис "id:" "root".Ваше приложение должно предоставить фактический идентификатор корневой папки для родительской ссылки.

Чтобы получить действительный идентификатор, вам нужно извлечь id из объекта root:

/drives/{drive-id}/root

Это будет возвращать что-то вроде этого:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('48d31887-5fad-4d73-a9f5-3c356e68a038')/drive/root/$entity",
    "createdDateTime": "2017-07-27T02:41:36Z",
    "id": "01BYE5RZ56Y2GOVW7725BZO354PWSELRRZ",
    "lastModifiedDateTime": "2019-01-18T03:41:15Z",
    "name": "root",
    "webUrl": "https://m365x214355-my.sharepoint.com/personal/meganb_m365x214355_onmicrosoft_com/Documents",
    "size": 106330475,
    "parentReference": {
        "driveId": "b!-RIj2DuyvEyV1T4NlOaMHk8XkS_I8MdFlUCq1BlcjgmhRfAj3-Z8RY2VpuvV_tpd",
        "driveType": "business"
    },
    "fileSystemInfo": {
        "createdDateTime": "2017-07-27T02:41:36Z",
        "lastModifiedDateTime": "2019-01-18T03:41:15Z"
    },
    "folder": {
        "childCount": 38
    },
    "root": {}
}

Используя приведенный выше пример, при перемещении файла ваш путь будет:

/drives/b!-RIj2DuyvEyV1T4NlOaMHk8XkS_I8MdFlUCq1BlcjgmhRfAj3-Z8RY2VpuvV_tpd/01BYE5RZ56Y2GOVW7725BZO354PWSELRRZ
...