如何使用 Microsoft API 将文件上传到跨域共享的文件夹?

How to use Microsoft API to upload file to folder shared across from a different domain?

我可以使用 Microsoft API 将文件上传到同一域内共享的文件夹。例如,user1@mycompany.com共享目录到user2@mycompany.com,那么我就可以通过user2@mycompany.com.

写入共享文件夹

更具体地说,我可以使用以下 API:

创建上传会话

https://graph.microsoft.com/v1.0/drives/<drive_id>/items/<dir_id>:/<filename>:/createUploadSession

但是,如果 drive_iddir_id 来自另一个域的用户,则相同的 API 将 return 404。例如,another@othercompany.com 共享文件夹到 user2@mycompany.com,然后通过 user2@mycompany.com.

上传文件

来自 API 的错误消息是

{
    "error": {
    "code": "itemNotFound",
    "message": "The resource could not be found.",
    "innerError": {
        "request-id": "526d86bc-c620-4782-a74d-c8cd8284df8b",
        "date": "2018-10-19T20:54:37"
        }
    }
}

是否有任何 API 可以将 OneDrive 文件上传到不同域的共享文件夹?

此时您只能从经过身份验证的帐户的组织访问驱动器。如果 alice@company1.combob@company2.com 共享并且 bob@company2.comcompany1 组织中有来宾帐户,那么我相信如果您使用外部来宾帐户登录 company1,然后您就可以访问共享驱动器了。

或者,如果您的应用能够对两个帐户进行身份验证,您可以利用上传和下载 URL 是自我身份验证这一事实并执行如下操作:

  1. 使用 alice@company1.com 的身份验证令牌,在文件夹上调用 createUploadSession。
  2. 使用 bob@company2.com 的授权令牌,下载要共享的文件。
  3. 使用来自 #1 的上传 url,上传文件(此处不需要其他身份验证令牌)