1

Trying to search Sharepoint files using Microsoft Graph api我知道,访问sharepoint我需要省略'我'并使用端点。使用GRAPH API从Sharepoint删除文件

https://graph.microsoft.com/v1.0/drive/root

但是,当我按照文件在https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/item_delete,我得到错误代码“未认证”作为响应。

我能够使用上述方法从OneDrive中删除文件,但不能从sharepoint中删除。什么是可能的解决方案?

回答

0

您是否在请求头中提供访问令牌?

https://graph.microsoft.io/en-us/docs/authorization/app_authorization

您需要提供它的每个请求要执行:

响应正文包含访问 令牌(的access_token)一个JSON格式的字符串。您需要将此令牌提供给任何后续的 HTTP请求以访问Microsoft Graph API资源。

+0

是的,我在我的请求头提供访问令牌。此外,我试图直接从https://graph.microsoft.io/en-us/graph-explorer#提供的图形浏览器执行相同的操作。它在那里也不起作用 –

+0

@AjayThomas,你能不能请求你正在执行的请求? –

+0

我正在执行的请求是这样的(从图形资源管理器提供): DELETE https://graph.microsoft.com/v1.0/drive/items/01LKBWIO27DTDXSC24SFE2PGMUPMNRGXFE 如果我对一个驱动器做了同样的事情(由在v1.0之后添加'me'标签,并相应地使用item id,它会起作用,文件被删除)。我怀疑它与权限有关。我试图改变我试图删除的文件的权限但无济于事 –

1

以下是Drives API的工作原理 - 每个用户都可以访问多个驱动器。 OneDrive for Business只是其中一个驱动器。每个SharePoint文档库也是一个驱动器。

通常,驱动器的访问时间为/drives/<drive-id>,因为参考页上的第二个示例显示为 - https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/drive_get

OneDrive for Business可作为便捷的快捷方式访问为/me/drive

只需/drive指向根网站集合中的Shared Documents文档库。由于参考页面没有说明应该返回哪个驱动器,因此我会远离这个API,直到它被记录为止。如果您尝试访问的项目不存在,则很容易出错。

要解除自己:

  1. 确保您要删除的文件是在根的SharePoint网站集的Shared Documents文件夹。
  2. 确保代表您的应用程序所代表的用户有权删除所需文件夹中的文件。
  3. 确保您正在访问正确的驱动器。当您收到驱动器项目时,将会有一个parentReference属性,其中包含driveId子属性。然后,要访问该项目,您可以执行/drives/<drive-id>/items/<item-id>
+0

您建议的答案点数: 1)我将所需用户添加到组中:共享点的团队网站所有者 2)我确定我是访问正确的驱动器和项目(文件),因为我能够获得项目属性,我也能够下载该项目也 尽管上述步骤,我仍然收到错误代码'未经验证'作为回应 –

+0

我有两个问:1 )你可以跟踪http请求和响应,例如与小提琴手。在共享公共云驱动器之前等待1小时(访问令牌到期)。 2)添加'Sites.ReadWrite.All'权限到你的应用程序,并让我知道是否有任何改变。 –

+0

与你的询问相关2,我不完全清楚。当你说添加权限是否意味着在我的应用程序中配置Microsoft Graph应用程序的权限以启用Sites.ReadWrite.All(这是“在所有网站集中读写项目”)?因为在那里我只能看到'读取所有网站集中的项目'选项。 我有这种感觉,我失去了一些东西。 –