无法使用 Outlook rest 在 outlook 加载项中向邮件添加附件 API

Can't add attachment to message in outlook add-in using Outlook rest API

我看到这个 Access to Outlook RestAPI from an Outlook web Add-in 问题,但没有关于附件的内容。

我按照 https://dev.office.com/docs/add-ins/outlook/use-rest-api?product=outlook 本教程从我的加载项中成功地使 outlook rest API 请求。例如,我成功获取了一些消息详细信息),但我有 2 个问题:

  1. 我无法通过 outlook rest API 调用消息添加附件。 我尝试像这里一样使用 itemId 进行调用:

    https://outlook.office.com/api/v2.0/me/messages/" + itemId +"/attachments
    

我得到的错误是:

{"error":{"code":"ErrorAccessDenied","message":"The api you are trying to access does not support item scoped OAuth."}}

我尝试更改清单上的权限(ReadWriteMailbox/ReadWriteItem)但没有任何帮助..

  1. 有时调用 Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function().... 函数工作和 return 访问令牌,有时 return错误,我也不知道是什么原因。 我有时得到的错误是:

    OSF.DDA.AsyncResult
    error:OSF.DDA.Error
    status:"failed"
    

希望大家能帮帮我,谢谢大家!!

在 #1 上,错误表明您拥有的令牌仅限于当前项目。 REST API 不能使用这种令牌来修改附件,所以你会得到那个错误。此 应该 工作的正确方法是您在加载项清单中指定 ReadWriteMailbox,然后您取回的令牌应该是邮箱范围的令牌。但是,目前桌面版 Outlook 在处理 getCallbackTokenAsync 时存在一个错误,导致它仍然错误地 return 一个项目范围的令牌。该错误已修复,但更新尚未公开推送。

如果你想检查这个,复制你得到的令牌并转到 https://jwt.io/。将其粘贴到 "Encoded" 框中并检查负载。如果您看到 "ver": "Exchange.Callback.V1",则它是项目范围的标记。如果您看到 "ver": "Exchange.Callback.V2",那是邮箱范围的。

关于#2,我不知道。如果您可以在 Outlook 客户端计算机上获取 Fiddler 跟踪以捕获发出令牌请求的加载项,那将会很有帮助。