Загрузка анонимно в общедоступную папку на OneDrive - PullRequest
0 голосов
/ 05 сентября 2018

Что такое вызов API REST для анонимной загрузки в общедоступную папку на OneDrive?

Я попытался открыть общий доступ к папке через веб-интерфейс OneDrive, создав ссылку с надписью: «Любой пользователь, имеющий эту ссылку, может редактировать этот элемент» и используя REST API:

POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/{sharedFolderId}/createLink
Content-type: application/json
{
    "type": "edit",
    "scope": "anonymous"
}

В обоих случаях я могу читать из общей папки без входа в систему по

GET https://api.onedrive.com/v1.0/shares/{shareId}/items/{sharedFolderId}

Я также могу прочитать само разрешение, используя

GET https://api.onedrive.com/v1.0/shares/{shareId}/items/{sharedFolderId}/permissions

=>

{
    "@odata.context":"https://api.onedrive.com/v1.0/$metadata#shares('{shareId}')/items('{sharedFolderId')/permissions",
    "value":
    [
        {
            "id":"{permissionId}",
            "link":
            {
                "application":
                {
                    "displayName":"{my own app}",
                    "id":"{short app id}"
                },
                "type":"edit",
                "webUrl":"https://1drv.ms/u/{shareId}"
            },
            "roles":["write"],
            "shareId":"{shareId}",
            "expirationDateTime":"0001-01-01T00:00:00Z",
            "hasPassword":false
        }
    ]
}

Однако при попытке загрузить файл или создать подпапку, т.е.

PUT https://api.onedrive.com/v1.0/shares/{shareId}/driveItem:/{filename}:/content
Content-type: text/plain
some text goes here

или

POST https://api.onedrive.com/v1.0/shares/{shareId}/items/{sharedFolderId}/children
Content-type: application/json
{
    "name": "TestFolder",
    "folder": { }
}

оба проваливаются как несанкционированные вызовы, но разве смысл «редактировать» ссылку с «анонимной» областью действия состоит в том, что «любой пользователь с этой ссылкой может редактировать этот элемент»?

Я пробовал различные комбинации https://graph.microsoft.com/v1.0 вместо https://api.onedrive.com/v1.0 и /drives/{driveId} вместо /shares/{shareId}, а также /shares/{shareToken}, где shareToken - это кодировка "u!" ​​webUrl от link в разрешении.

До сих пор без возможности выяснить правильный вызов REST API. Я надеюсь, что кто-то может помочь: -)

Вы можете загрузить мой TestOneDrive Тестовый проект Visual Studio для воспроизведения проблем. Он также содержит код инициализации для создания и публикации папки.

1 Ответ

0 голосов
/ 10 сентября 2018

Из-за того, что после этого никто из группы продуктов не последовал, и ни один официальный документ не объявил об этом, поэтому я предлагаю вам сначала отправить запрос на функцию UserVocie или проголосовать за существующий, близкий к вашей проблеме.

...