【问题标题】:Outlook OfficeJS itemID with slashs return error from MS graph带有斜杠的 Outlook Office JS 项目 ID 从 MS 图中返回错误
【发布时间】:2020-10-28 18:37:53
【问题描述】:

我有一个 Outlook 加载项,它从 OfficeJS 获取 ItemID,将其传递回快速服务器,该服务器通过 Graph API 转发端点转发消息。

通常我会得到类似于 Graph API 正确转发的 ItemID:

AQMkADAwATNiZmYAZC1mZDMyLTJjODAtMDACLTAwCgBGAAAD6HpLXdIWSkydFpIOnccszQcAa+WVq3+CfU+sUUEjYH6kNXXXXXXa+WVq3+CfU+sUUEjYH6kNAAAANor+k8AAAA=

我遇到的问题是在某些情况下我会得到这样的 ItemID:

AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA

注意/ 就在尾随AAAA 之前。

然后我对 URI 组件进行编码并发出以下请求:


https://graph.microsoft.com/v1.0/me/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ%2BJc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC%2BafEDRa51jp3lYhRMAAHjntX%2FAAAA/forward

我得到了这样的回应:


"error":{
    "code":"BadRequest",
    "message":"Unsupported segment type. ODataQuery: users/rando@outlook.com/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA/forward",
    "innerError":{
        "request-id":"6b3a8b34-4474-4260-98d4-107b1dfd4cc4",
        "date":"2017-08-04T18:02:10"
    }
}

有没有人遇到过这种情况或知道解决方案?当 / 在 ItemId 中时,这似乎是 Microsoft 的问题。

注意:已对发布的用户和 ItemId 进行了一些清理。

【问题讨论】:

  • 您是否尝试在 Graph Explorer 中查找带有 id 的消息?我很好奇 Graph 在这种情况下看到的 ID。
  • 我最终得到了与我从 API 调用 Unsupported segment type 收到的相同错误。如果你想试一试,如果你想要确切的 ItemID,请联系我。
  • 我建议在 Explorer 中查找消息,以从 Graphs 的角度查看“真实”ID 是什么。我希望使用 Id 本身会给你同样的错误。

标签: outlook-addin office-js azure-ad-graph-api


【解决方案1】:

Office.context.mailbox.item.itemId 返回的 id 是 EWS 项目 id。如您所见,REST id 的格式略有不同。

Office.context.mailbox.convertToRestId 加载项 API 会将 EWS 项 ID 转换为 REST/Graph 项 ID,然后您的加载项可以将其发送到您的服务器。

【讨论】:

    【解决方案2】:

    好的,如果其他人有这个问题,我从互联网的深处找到了这个:

    The same ID in order to be processed by the Office 365 Unified API would need to be slightly altered by replacing all / (slash) characters with a - (dash):

    验证此操作。如果有人有指向 MS Docs 的链接说明这一点,你会得到我的 +1。

    【讨论】:

      【解决方案3】:

      有一个 Graph API 端点可以满足您的需求:它将 EWS ID 转换为 REST ID。来自文档(链接如下):

      在格式之间转换 Outlook 相关资源的标识符。

      支持的格式有:

      entryId - MAPI 客户端使用的二进制条目 ID 格式。

      ewsId - Exchange Web 服务客户端使用的 ID 格式。

      immutableEntryId - 二进制 MAPI 兼容的不可变 ID 格式。

      restId - Microsoft Graph 使用的默认 ID 格式。

      restImmutableEntryId - Microsoft Graph 使用的不可变 ID 格式。

      https://docs.microsoft.com/en-us/graph/api/user-translateexchangeids?view=graph-rest-1.0&tabs=http

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 2021-05-21
        • 2020-04-18
        相关资源
        最近更新 更多