【问题标题】:accessing shared-to-all onedrive worksheet using microsoft graph使用 microsoft graph 访问共享到所有的 onedrive 工作表
【发布时间】:2019-03-02 16:00:59
【问题描述】:

我的(第一个)android 应用运行良好,但我有一个非常重要的问题,我现在正试图解决几天

我正在尝试使用 Graph 从另一个帐户访问我的 OneDrive 中的 Excel 文档。此文件通过共享链接向所有人公开。

我正在使用下一个 GET 来检索文件

https://graph.microsoft.com/v1.0/drives/MY_DRIVE/MY_EXCEL_FILE/workbook/worksheets/Data/tables/TableData/rows

唯一的问题是该文件必须位于用户共享文件夹中,出于安全原因,我想避免这样做。

我将 onedrive 用于企业,但如果这是一个问题,我可以使用个人帐户,但应用程序的用户必须使用企业,因为我只授予特定组织的访问权限。

[2018 年 9 月 27 日更新]

关于文件不应该在共享文件夹中,以下是我认为的原因(我希望我错了):

  1. 在我的企业 onedrive 帐户中,我将文件共享为公开并检索共享链接:

    https://MY_ORGANIZATION.sharepoint.com/:x:/g/personal/MY_USER/Eabkxa2md3JEsW0qQEuYRK4BKnnnHeJqNuspeZ6TEdkWsQ
    
  2. 我进入图形资源管理器并运行命令以检索与 excel JSON 相同的文件:

    https://graph.microsoft.com/v1.0/drives/MY_DRIVE/MY_EXCEL_FILE/workbook/worksheets/Data/tables/TableData/rows
    
  3. 图形浏览器回复 HTTP 200 和正确的 JSON(如上所述,在我的 Android 应用上也可以正常工作)。

  4. 我从 Graph Explorer 和 OneDrive 中退出并确保共享链接仍然有效。

  5. 我使用不同的帐户(相同的组织)连接 Graph Explorer 并运行相同的命令来检索 excel JSON:

    https://graph.microsoft.com/v1.0/drives/MY_DRIVE/MY_EXCEL_FILE/workbook/worksheets/Data/tables/TableData/rows
    
  6. 这次我得到“失败 - 状态代码 404”:

    {
        "error": {
            "code": "itemNotFound",
            "message": "The resource could not be found.",
            "innerError": {
                "request-id": "6d095277-fa07-40ba-bfcb-c93e96660fdc",
                "date": "2018-09-27T15:43:28"
            }
        }
    }
    
  7. 如果我使用浏览器输入共享链接,文件会显示在共享列表中(在浏览器上的“最近”文件夹下方和“发现”文件夹上方):

     https://MY_ORGANIZATION.sharepoint.com/:x:/g/personal/MY_USER/Eabkxa2md3JEsW0qQEuYRK4BKnnnHeJqNuspeZ6TEdkWsQ
    
  8. 当我返回 Graph Explorer 并再次运行该命令时,我收到了 HTTP 200 响应。

    https://graph.microsoft.com/v1.0/drives/MY_DRIVE/MY_EXCEL_FILE/workbook/worksheets/Data/tables/TableData/rows
    

我的结论是文件必须在共享文件夹中。如果我遗漏了什么,请纠正我。

ps:文件出现在第二个帐户的“共享”文件夹后,查看 OneDrive 的“管理访问”,我现在看到了第二个帐户的首字母。这可能表示文件正式访问和共享。从他的共享文件夹中删除文件,保留其首字母并从 Graph explorer 中正确响应。只有取消分享链接似乎会取消分享。

[2018 年 9 月 27 日更新 - 2]

由于马克先生的另一条评论,我稍微修改了这个问题,并想指出我还使用我的实际共享链接尝试了下一个链接。这有类似的响应(不确定确切的错误代码)+获取实际 excel 的其他问题。

Accessing shared DriveItems

【问题讨论】:

  • 不清楚您遇到了什么问题。为什么您认为此文件需要位于共享文件夹中?这不是要求。
  • 嗨,马克,感谢您的快速回复。我编辑了我原来的问题以反映我为什么这么认为。将不胜感激任何帮助。我真的很沮丧:(
  • 我显然在场景中遗漏了一些东西。您是否正在使用 Graph 从其他帐户访问 OneDrive 中的 Excel 文档?
  • 亲爱的马克 - 完全正确。此文件用作所有应用程序用户的设置文件,位于我的个人 onedrive 上。
  • 那行不通。 OneDrive 将仅显示明确共享或以其他方式访问的项目(即在 Excel 中打开共享文档)。这也不是此 API 的预期目的,也不是向应用程序传递配置/数据的好方法。您将遇到各种性能和限制问题。

标签: excel microsoft-graph-api onedrive


【解决方案1】:

您需要将链接发送给用户或发送邀请邮件给用户,都是推荐的方式。

如果文件包含敏感信息,则需要将内容与原始文件隔离,使其符合GDPR。目前,共享是针对项目/文件级别而不是工作表/excel-rows 级别。

您可以使用 createLink 操作通过共享链接共享 DriveItem

【讨论】:

  • 感谢您的回复。我会调查的。
  • Seiya Su - 您能否确认您的回答意味着您不知道通过 microsoft graph 访问文件而不明确与用户共享文件的任何方式(即通过电子邮件或用户访问它) ?如果是这样,有什么解决方法吗?我只需要一种在用户不知道的情况下获取该文件的 JSON 表示的方法。我可以使用在线 JSON 服务找到替代方案,但管理它会更加困难!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多