【问题标题】:Uploading a large attachment using Microsoft Graph使用 Microsoft Graph 上传大型附件
【发布时间】:2020-01-14 01:47:37
【问题描述】:

我正在尝试将大 (> 4mb) 附件上传到 Office 365 中的现有邮件。我正在按照以下说明操作:https://docs.microsoft.com/en-us/graph/outlook-large-attachments?tabs=http

我已经成功创建了上传会话,并获得了一个看起来合法的uploadUrl值,它与文档中的示例大致匹配。然后我开始我的 PUT 到这个 url,对于我选择的第一个字节范围。我确定我正确设置了 Content-Type、Content-Length 和 Contact-Range 标头。我的问题是我得到 http 401 (Unauthorized) 作为响应。返回的错误标头是“观众声明值对当前资源无效...”并且它反刍我的网址并且看起来完好无损。

我的理论是我需要向我的应用程序添加另一个 API 权限。我已经有邮件 read.write,这允许我创建一个

【问题讨论】:

    标签: microsoft-graph-api microsoft-graph-mail


    【解决方案1】:

    根据可恢复上传的documentation page,您需要为委派工作帐户提供Files.ReadWriteFiles.ReadWrite.AllSites.ReadWrite.All 中的任何一个权限。 如果您使用的是应用程序令牌,则需要Sites.ReadWrite.All 权限。

    【讨论】:

    • 谢谢,这是个好主意,但这些权限似乎没有任何作用。我正在查看的文档是这样说的:“不要指定授权请求标头。PUT 查询使用来自 uploadUrl 属性的预认证 URL,它允许访问 outlook.office.com 域。”事实上,url 中有一个很大的长 AuthToken 值,所以我认为一旦我得到了 uploadUrl,我应该拥有我需要的所有身份验证。还是不行。
    • 是的,令牌是作为查询参数的 uploadUrl 的一部分,因此您不必添加自己的身份验证。但是您提到您的错误是由于无效的受众。您创建上传会话的令牌是来自创建会话的同一应用程序还是您使用的是代表流程?转到 jwt.io 或等效站点并输入您的访问令牌。受众对应用程序的要求是否符合您的预期?
    • 感谢您的见解 - 我现在可以使用它了,在获取令牌时没有请求足够的范围是一个问题。
    • 杰夫,你能把解决方案写在这里吗?
    【解决方案2】:

    出于兴趣,您必须添加哪些权限?从我们的角度来看,文档是否清楚?我可以看到可恢复文件上传权限特定于 SharePoint,并且可以使用“Files.ReadWrite、Files.ReadWrite.All、Sites.ReadWrite.All”。

    对于邮件消息,您需要 Mail.ReadWrite 根据此文档上传大文件https://docs.microsoft.com/en-us/graph/api/message-post-attachments?view=graph-rest-1.0&tabs=http

    我在文档上创建了一个反馈项来更新此内容。 https://github.com/microsoftgraph/microsoft-graph-docs/issues/6817

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多