来自 MS 图形的带斜杠的 Outlook Office JS 项目 ID return 错误
Outlook OfficeJS itemID with slashs return error from MS graph
我有一个 Outlook 加载项,它从 OfficeJS 获取 ItemID,将其传递回一个快速服务器,该服务器通过 Graph API 转发端点转发消息。
通常我得到的 ItemID 看起来像这样,Graph API 正确转发:
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 进行一些清理。
好吧,如果其他人有这个问题,我从互联网深处发现了这个:
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 文档有 link,你就会得到我的 +1。
Office.context.mailbox.item.itemId 返回的 id 是一个 EWS 项目 id。如您所见,REST id 的格式略有不同。
Office.context.mailbox.convertToRestId 加载项 API 会将 EWS 项目 ID 转换为 REST/Graph 项目 ID,然后您的加载项可以将其发送到您的服务器。
有一个 Graph API 端点可以执行您想要的操作:它将 EWS ID 转换为 REST ID。来自文档(link 在下方):
Translate identifiers of Outlook-related resources between formats.
支持的格式有:
entryId - MAPI 客户端使用的二进制条目 ID 格式。
ewsId - Exchange Web 服务客户端使用的 ID 格式。
immutableEntryId - 二进制 MAPI-compatible 不可变 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
我有一个 Outlook 加载项,它从 OfficeJS 获取 ItemID,将其传递回一个快速服务器,该服务器通过 Graph API 转发端点转发消息。
通常我得到的 ItemID 看起来像这样,Graph API 正确转发:
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 进行一些清理。
好吧,如果其他人有这个问题,我从互联网深处发现了这个:
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 文档有 link,你就会得到我的 +1。
Office.context.mailbox.item.itemId 返回的 id 是一个 EWS 项目 id。如您所见,REST id 的格式略有不同。
Office.context.mailbox.convertToRestId 加载项 API 会将 EWS 项目 ID 转换为 REST/Graph 项目 ID,然后您的加载项可以将其发送到您的服务器。
有一个 Graph API 端点可以执行您想要的操作:它将 EWS ID 转换为 REST ID。来自文档(link 在下方):
Translate identifiers of Outlook-related resources between formats.
支持的格式有:
entryId - MAPI 客户端使用的二进制条目 ID 格式。
ewsId - Exchange Web 服务客户端使用的 ID 格式。
immutableEntryId - 二进制 MAPI-compatible 不可变 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