我们使用office JavaScript api开发Outlook加载项,并且需要更新邮件消息的类别 .
尝试使用Exchange EWS调用UpdateItem时,使用加载项令牌 - 它失败了500 .
请参阅:http://pastebin.com/55x2d2Ht的请求和回复
-
应用程序的清单权限是ReadWriteMailbox(最高)
-
在OWA / manageapps中选择应用程序时 - 显示"When this adding is clicked, it will be able to: Read, create and update email in your mailbox"
-
从mailbox.getCallbackTokenAsync尝试了两个令牌并使用makeEwsRequestAsync .
-
EWS GetItem和CreateItem操作成功 - 只有UpdateItem失败
-
对UpdateItem的响应:500请求的Web方法对此调用方或应用程序不可用 .
-
它是500(而不是403)这一事实可能意味着UpdateItem操作被完全阻止了addin app
-
jwt令牌(来自getCallbackTokenAsync)没有't have ' scp'键
-
如果使用另一个令牌发送相同的UpdateItem XML Soap数据包,则从Azure中注册的具有读取/写入权限的测试OAuth应用程序发送 - >成功 . 这个app jwt标记用"scp":"full_access_as_user Mail.Read Mail.ReadWrite Mail.Send"
-
尝试使用加载项令牌的另一个交换用户 - 也失败了 .
-
Office AddIn文档声明在addin的上下文中支持EWS UpdateItem操作 . 见Office Dev Center
-
摘要:只有使用Addin OAuth令牌的Ews UpdateItem失败 . 其他操作成功,使用其他令牌(或Basic Auth)发布UpdateItem也会成功 .
1 回答
您应该能够将UpdateItem与
makeEwsRequestAsync
一起使用 . 您不能使用getCallbackTokenAsync
,因为此调用返回只读的令牌,该令牌只能用于GetItem
和GetAttachment
. 使用makeEwsRequestAsync
发出请求时,您的XML SOAP请求(makeEwsRequest
中的数据参数应如下所示:您不需要在调用makeEwsRequestAsync时传入回调令牌 .