问题标签 [microsoft-graph-files]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
240 浏览

microsoft-graph-api - 尝试删除权限返回 HTTP 403 - 不允许操作

尝试使用此请求执行 DELETE 操作https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions/{perm-id}时,Microsoft Graph 已开始返回HTTP 403带有此正文的:

这一点非常关键,因为我们不再有办法删除已添加到 SharePoint 网站文件夹中的权限。我们看到这个问题现在正在影响越来越多的租户。到目前为止,微软的支持并不是很有帮助,所以我不知道该去哪里。我认为这个问题是由于 SharePoint/Microsoft Teams 中权限模型工作的副作用引起的。

奇怪的是,它在添加新的预览权限范围Sites.FullControl.All时起作用,而不管用Files.ReadWrite.All还是Group.ReadWrite.All不起作用

0 投票
0 回答
195 浏览

microsoft-graph-api - 使用 API Graph 在驱动器之间复制文件时出错

我开发了一个 Azure 函数,它通过 Graph API 将文件从 Sharepoint 复制到 Teams。

在我的开发租户中,Azure 函数可以正常工作,但是当我在客户租户中部署它时,文件复制失败。

在 Azure AD 中,我使用Sites.ReadWrite.All. AppID/Secrets 用于验证 API 调用。

我的电话是:

响应状态为accepted但未复制文件。

响应标头值是正确的location,但是当我浏览到locationURL 时,我收到消息“处理时出现一般异常”。

源文件存在且目标驱动器存在。如果我在 Graph API Explorer 中进行此 API 调用,则会复制文件。

0 投票
0 回答
276 浏览

java - 尝试上传文件导致 403 - notAllowed 响应

我正在尝试使用 Microsoft REST API 将文件上传到 OneDrive。我正在将访问令牌传递给从 Azure AD 服务获得的请求:

作为回应,我收到此错误:

0 投票
0 回答
144 浏览

microsoft-graph-api - OneDrive 共享文件夹增量

驱动器的跟踪更改中的“备注”部分所述

  • 在 OneDrive for Business 和 SharePoint 中,delta仅支持root文件夹,而不支持驱动器中的其他文件夹。

但是,当我在获得对其中一个内部文件(不包括根文件夹本身)的权限的驱动器的根目录上使用 delta 请求时,它会导致不正确的 delta 结果。

例如,根看起来像这样:

  • root
    • folder1(与我分享)
      • file1
    • folder2与我共享)
      • folder3(与我分享)
        • file2

在这种情况下,我期待 delta 请求root将给我folder1, file1folder3file2事实并非如此。该请求仅返回folder1file1但忽略folder3及其子项。可能是因为当它进入folder2未共享的增量时,它会停止搜索增量。

如果我尝试直接在文件夹上调用 delta 请求,则会如预期的那样导致错误。

有解决方法吗?

0 投票
1 回答
409 浏览

c# - “此上传会话的 DeferCommit 设置为 false”错误

我正在尝试使用上传会话来实现上传大文件

现在我有(获取上传会话):

此请求的响应是一些会话 URL,但是当我将文件块上传到此 URL 时,我收到一个错误:

有谁知道是什么导致了这个错误?

0 投票
1 回答
1300 浏览

java - 无法使用 Java SDK 将文件上传到 OneDrive

我无法使用 MS Graph Java SDK 将文件上传到 OneDrive,也找不到任何基于 Java 的示例。

我在这里发现了一个类似(但未回答)的问题:MS Graph Java SDK:如何将大文件上传到 OneDrive?

但是,我已经设法拼凑出上面提出的问题中显示的更多代码(基于基于 .NET 的示例),但仍然没有成功。

尝试发布上传会话请求时发生错误:

不是返回上传会话,而是返回以下错误:

0 投票
0 回答
76 浏览

php - 没有 odata nextlink 与 microsoft graph drive children

我正在尝试从 SharePoint 文件夹中获取所有文件。文件夹中有很多文件,所以我需要一些方法来获取它们。

这是我用于请求的代码:

响应不包括 anextlink但该文件夹中有更多文件。当我将其更改为 时$top=500,我只得到前 500 个项目。

0 投票
0 回答
111 浏览

microsoft-graph-api - OneDrive Personal 列表版本 API 不提供当前版本的唯一 ID

我正在使用msgraph iOS SDK在移动应用程序上访问 OneDrive 。我想允许用户管理文件的版本,为此我正在使用list versions API。此外,我还在移动设备上缓存已经下载的文件。我遇到了 OneDrive 个人版的问题,它在文件版本方面与 OneDrive 商业版略有不同。

似乎在列出文件的版本时,personal 将“current”指定为当前版本的版本 id,而 business 设置了实际的唯一 id。这种行为使我无法为设备上缓存的数据分配唯一标识符,因此我不知道后端是否有我应该下载的更新版本。

我找到了一种我认为不是最佳解决方案的解决方法——我正在使用文件的cTag字段。该文档指出 acTag是:

项目内容的 eTag。如果仅更改元数据,则不会更改此 eTag。注意 如果项目是文件夹,则不返回此属性。只读。

cTag用作current版本的唯一 id 可以让我检测到新版本已上传。

我对使用它不满意的原因是它cTag仅适用于当前版本。另一方面,唯一 id 仅适用于非当前版本。一旦上传了较新的版本并为之前的当前版本分配了一个 id,我无法知道我已经下载了这个版本并用之前的cTag.

有没有一种方法可以获得文件版本的一致唯一标识符?例如,如果cTag可以以某种方式在列表版本 API 中提供?或者,或者,获取当前版本的唯一 ID?

谢谢!

0 投票
1 回答
481 浏览

excel - Microsoft Graph API $filter=name eq 'foo' 查询不适用于 GET 工作簿/表/{id}/列。无错误无过滤

我正在查看Table1保存在 OneDrive for Business 帐户中的 Excel 书籍中的表格 ( )。CREATEDDATE然后我想从该表中获取列中的最大值。

我想避免使用 API 拉下整个表,所以我试图将我的查询结果过滤到仅CREATEDDATE列。但是,表中的列结果没有被过滤到一列,并且我没有收到错误来帮助解决原因。我得到的只是一个HTTP 200响应和完整的未过滤表结果。

是否可以按列名过滤从 API 检索到的列?文档让我这么想。

我已经确认它/columns?$select=name可以正常工作并且只返回名称字段,所以我知道它将它识别为一个实体。$filter并且$orderby在引用响应中的任何实体时什么都不做(name, id, index, values)。我知道我可以按位置限制列,但我宁愿明确地按名称引用列,以防顺序发生变化。

我正在使用这个查询:

0 投票
0 回答
151 浏览

microsoft-graph-api - 使用 MSGraph API 获取 OneDrive Business 文件信息,包括最新版本 ID

我正在调用get item API来获取文件的信息。另外我想得到它最新版本的id。我可以通过发出两个请求来做到这一点:

GET /me/drive/items/{item id}- 用于获取文件的元数据。

GET /me/drive/items/{item id}/versions?$top=1&$orderby=lastModifiedDateTime DESC- 获取最新版本的 id。

我宁愿使用单个请求获得相同的数据。使用以下请求:

GET /me/drive/items/{item id}?$expand=versions($select=id)

我能够获取文件的信息,包括其所有版本的 id。

但是,我还没有找到只过滤最新版本的方法。指定$expand=versions($top=1;$orderby=lastModifiedDateTime DESC)不会做任何事情(尽管请求确实成功)。似乎 $expand 仅支持https://docs.microsoft.com/en-us/graph/query-parameters#expand-parameter中指定的 $select 参数。

我担心对于具有很多版本的文件,扩展的集合将被截断,并且它可能不包括所有版本 - 特别是最新版本。我在文档中找不到关于扩展集合的顺序和截断可能性的任何规范。

能否可靠地使用此方法在单个请求中获取最新版本 id?是否有其他可能性在单个请求中获取数据?

谢谢!