问题标签 [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.
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
不起作用
microsoft-graph-api - 使用 API Graph 在驱动器之间复制文件时出错
我开发了一个 Azure 函数,它通过 Graph API 将文件从 Sharepoint 复制到 Teams。
在我的开发租户中,Azure 函数可以正常工作,但是当我在客户租户中部署它时,文件复制失败。
在 Azure AD 中,我使用Sites.ReadWrite.All
. AppID/Secrets 用于验证 API 调用。
我的电话是:
响应状态为accepted
但未复制文件。
响应标头值是正确的location
,但是当我浏览到location
URL 时,我收到消息“处理时出现一般异常”。
源文件存在且目标驱动器存在。如果我在 Graph API Explorer 中进行此 API 调用,则会复制文件。
java - 尝试上传文件导致 403 - notAllowed 响应
我正在尝试使用 Microsoft REST API 将文件上传到 OneDrive。我正在将访问令牌传递给从 Azure AD 服务获得的请求:
作为回应,我收到此错误:
microsoft-graph-api - OneDrive 共享文件夹增量
- 在 OneDrive for Business 和 SharePoint 中,
delta
仅支持root
文件夹,而不支持驱动器中的其他文件夹。
但是,当我在获得对其中一个内部文件(不包括根文件夹本身)的权限的驱动器的根目录上使用 delta 请求时,它会导致不正确的 delta 结果。
例如,根看起来像这样:
root
folder1
(与我分享)file1
folder2
(未与我共享)folder3
(与我分享)file2
在这种情况下,我期待 delta 请求root
将给我folder1
, file1
,folder3
但file2
事实并非如此。该请求仅返回folder1
,file1
但忽略folder3
及其子项。可能是因为当它进入folder2
未共享的增量时,它会停止搜索增量。
如果我尝试直接在文件夹上调用 delta 请求,则会如预期的那样导致错误。
有解决方法吗?
java - 无法使用 Java SDK 将文件上传到 OneDrive
我无法使用 MS Graph Java SDK 将文件上传到 OneDrive,也找不到任何基于 Java 的示例。
我在这里发现了一个类似(但未回答)的问题:MS Graph Java SDK:如何将大文件上传到 OneDrive?
但是,我已经设法拼凑出上面提出的问题中显示的更多代码(基于基于 .NET 的示例),但仍然没有成功。
尝试发布上传会话请求时发生错误:
不是返回上传会话,而是返回以下错误:
php - 没有 odata nextlink 与 microsoft graph drive children
我正在尝试从 SharePoint 文件夹中获取所有文件。文件夹中有很多文件,所以我需要一些方法来获取它们。
这是我用于请求的代码:
响应不包括 anextlink
但该文件夹中有更多文件。当我将其更改为 时$top=500
,我只得到前 500 个项目。
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?
谢谢!
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
)。我知道我可以按位置限制列,但我宁愿明确地按名称引用列,以防顺序发生变化。
我正在使用这个查询:
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?是否有其他可能性在单个请求中获取数据?
谢谢!