【问题标题】:Accessing shared OneDrive files via Microsoft Graph?通过 Microsoft Graph 访问共享的 OneDrive 文件?
【发布时间】:2019-06-20 19:10:07
【问题描述】:

我有一个使用 OneDrive 设置的公司帐户。我有一个没有自己的 OneDrive 的“虚拟”(代理?)帐户设置。 (我故意希望此帐户具有很少的特权 - 它仅设置为读者。)我已将公司帐户中的文件夹共享到虚拟帐户。我想使用 Microsoft Graph 使用虚拟帐户来读取与其共享的文件。我该怎么办?什么是合适的调用?

当我尝试“/v1.0/me/drive/sharedWithMe”时,我收到“您无权创建此个人网站或您没有有效的许可证”。我真的不想在这个虚拟帐户上浪费 Office 365 许可证,但这是唯一的方法吗?是否可以通过 SharePoint 路由做到这一点?如果是这样,怎么做?有没有其他更好的方法来完成我想要实现的目标?

任何帮助将不胜感激!

【问题讨论】:

    标签: sharepoint microsoft-graph-api onedrive


    【解决方案1】:

    问题是/me 试图为呼叫者找到个人网站,因此如果他们没有订阅,请求将失败。

    您是否可以提前知道共享项目?我认为这确实是您可以使这种情况发挥作用的唯一方法。在这种情况下,您可以执行以下操作之一。

    使用 API ID
    作为数据的所有者,发出 API 请求以获取项目的driveIdid。然后作为虚拟帐户发出如下请求:

    https://graph.microsoft.com/v1.0/drives/driveId/items/id

    使用 SharePoint URL
    在这种情况下,假设该文件夹的 SharePoint URL 是 https://tenant-my.sharepoint.com/personal/user_tenant_com/Documents/Folder,您可以 encode it as a share id 并发出如下请求来访问它:

    https://graph.microsoft.com/v1.0/shares/u!aHR0cHM6Ly90ZW5hbnQtbXkuc2hhcmVwb2ludC5jb20vcGVyc29uYWwvdXNlcl90ZW5hbnRfY29tL0RvY3VtZW50cy9Gb2xkZXI/driveItem

    【讨论】:

    • 非常感谢!我在这方面取得了一些进展,但现在我遇到了一个不同的问题。 graphClient.Drives[{drive-id}].Root.Children.Request().GetAsync() 翻译成graph.microsoft.com:443/v1.0/drives{drive-id}/root/children 可以完美运行。但是,我有两种不同样式的查询,它们在图形浏览器中效果很好,但在通过 API 尝试它们时会失败:graph.microsoft.com/v1.0/drives{drive-id}/root:/{folder-path}:/children graph.microsoft.com/v1.0/drives{ drive-id}/items/{item-id} 有什么想法吗?
    • 原来我遇到了“范围”问题。
    • @BradleyPlett 你最后用了什么示波器?
    【解决方案2】:

    好的,正如 Brad 所解释的,“/me”不起作用。但是,我能够得到这个工作。最初我有一个“范围”问题,但一旦我解决了这个问题,我就使用了https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-path}:/children 之类的查询,并且......问题解决了!

    【讨论】:

    • 你是如何“整理”出来的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多