Microsoft Graph:将文件上传到共享库而不是用户库?

Microsoft Graph: Uploading files to shared library instead of user's library?

在关于 Upload 的文档中,列出了这些请求选项:

PUT /me/drive/items/{parent-id}:/{filename}:/content
PUT /me/drive/root:/{parent-path}/{filename}:/content
PUT /me/drive/items/{parent-id}/children/{filename}/content
PUT /groups/<id>/drive/items/<parent-id>/children/<filename>/content

在关于可恢复上传的文档中,Create an upload session显示这些选项:

POST /me/drive/root:/{path-to-item}:/createUploadSession
POST /me/drive/items/{parent-item-id}:/{filename}:/createUploadSession

如果我必须上传到其他(不是 'me')驱动器怎么办?例如,默认的共享库(https://mycompany.sharepoint.com/Shared%20Documents),对于除了上传之外的任何其他海豚,文档说可以这样访问:

/drives/{drive-id}/items/{item-id}

所以,我的问题是:是否可以上传到“/Shared Documents”?如果是这样,PUT(小文件)或 POST(上传会话)的正确语法是什么? 也许类似于此? (这是我编的,没用)

PUT /drives/{drive-id}/items/{parent-id}/{filename}:/content

或(在上传会话的情况下):

POST /drives/{drive-id}/items/{parent-item-id}:/{filename}:/createUploadSession

例如,在 Graph Explorer 中,对以下内容的响应:

/v1.0/drives/THEDRIVEID/items/THEFOLDERID:/whatever.jpg:/createUploadSession

是:

{
    "error": {
        "code": "invalidRequest",
        "message": "A valid path must be provided.",
        "innerError": {
            "request-id": "THERETURNEDID",
            "date": "THERETURNEDDATE"
        }
    }
}

编辑:因为公司的根也可以作为 /drive/root/ 访问,我也尝试过(没有运气,在 1.0 和 beta 中):

/drive/root:/whatever.jpg:/createUploadSession
/drive/root/whatever.jpg:/createUploadSession

这是可能的,但您需要正确的应用权限才能 read/create 用户 OneDrive 之外的文件。您需要请求 Sites.ReadWrite.All,然后使用 /v1.0/drive/root:/file.bin:/createUploadSession.

,而不是请求 Files.ReadWrite

您还可以使用 Microsoft Graph 中的 SharePoint Sites API 访问团队网站文档库(根网站除外)。但是,此 API 仍处于测试版,不应在生产应用中使用。