我目前正在使用新的Web技术开发Outlook插件 .

但我不清楚的是:方法 Office.context.mailbox.getCallbackTokenAsync 在桌面(Web)和iOS上的工作方式不同 . 在Web上,我得到一个解码为以下的令牌:

{
  "nameid": "...",
  "ver": "Exchange.Callback.V1",
  "appctxsender": "https://.../core.html?button=ItemRead@0e7219f7-4c4d-47e7-b98a-7b9b9de02b80",
  "appctx": {
    "oid": "...",
    "puid": "10033FFF8670ACD2",
    "smtp": "...",
    "upn": "...",
    "scope": "ParentItemId:AAMkADQ2ZWI1NWUzLWFjNTgtNDhkNi05MTRlLTE0ZjkzYjhiZmIxYgBGAAAAAAAiCmOBDIX4TojSJs8PRerdBwCiXa8K4T4FToTXRfNegy16AAAAAAENAACiXa8K4T4FToTXRfNegy16AANl/D0YAAA="
  },
  "iss": "00000002-0000-0ff1-ce00-000000000000@0e7219f7-4c4d-47e7-b98a-7b9b9de02b80",
  "aud": "00000002-0000-0ff1-ce00-000000000000/outlook.office365.com@0e7219f7-4c4d-47e7-b98a-7b9b9de02b80",
  "exp": 1491917568,
  "nbf": 1491917268
}

我可以成功调用EWS来获取电子邮件的附件(如:https://github.com/OfficeDev/office-js-docs/blob/master/docs/outlook/get-attachments-of-an-outlook-item.md

然而,在iOS上,我得到的令牌看起来像这样 - 而且也无法获得ewsUrl属性 .

{
  "oid": "...",
  "puid": "....",
  "smtp": "...",
  "upn": "..",
  "ver": "Exchange.Callback.V2",
  "appid": "00000002-0000-0ff1-ce00-000000000000",
  "deploymentid": "https://outlook.office365.com/",
  "tid": "0e7219f7-4c4d-47e7-b98a-7b9b9de02b80",
  "acr": "1",
  "appidacr": "0",
  "scp": "Mail.ReadWrite Mail.Send Calendars.ReadWrite Contacts.ReadWrite",
  "iss": "https://outlook.office365.com/",
  "aud": "https://outlook.office365.com",
  "exp": 1491918090,
  "nbf": 1491917190
}

当用作EWS的承载令牌时,此令牌不起作用,所以我的猜测是它只适用于REST Api? Exchange.Callback.V2一般只能用于REST Api吗?调用EWS和REST时的标准是什么?

当存在没有REST支持的内部部署Exchange 2016服务器时,如何支持非Office365的方案?

谢谢托比亚斯