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

时间:2018-10-19 21:36:07

标签: microsoft-graph onedrive

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

更具体地说,我能够使用以下API创建上传会话:

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

但是,如果404drive_id来自另一个域的用户,则相同的API将返回dir_id。例如,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"
        }
    }
}

是否存在可以将OneDrive文件上传到不同域中的共享文件夹的API?

1 个答案:

答案 0 :(得分:0)

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

或者,如果您的应用程序能够同时对两个帐户进行身份验证,则您可以利用上载和下载URL可以自我认证的事实,并执行以下操作:

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