Не следует предполагать, что идентификаторы Exchange взаимозаменяемы на разных платформах. На протяжении многих лет Exchange использовал безумное количество различных форматов для идентификаторов. Это, вероятно, суть проблемы здесь.
Есть некоторые механизмы для конвертации между ними , но я обычно советую против этого, если у вас нет другого выбора.
Я не уверен, почему / как вы анализируете OWS DOM, но я, честно говоря, более удивлен, что идентификаторы настолько близки, чем я, потому что они не работают так, как ожидалось. Если вы хотите извлечь сообщение из Graph из OWA, я бы использовал для этого Outlook Web Add-in . Каркас надстройки включает в себя метод convertToRestId , который возвращает идентификатор, который вы можете использовать с Microsoft Graph:
function getItemRestId() {
if (Office.context.mailbox.diagnostics.hostName === 'OutlookIOS') {
// itemId is already REST-formatted
return Office.context.mailbox.item.itemId;
} else {
// Convert to an item ID for API v2.0
return Office.context.mailbox.convertToRestId(
Office.context.mailbox.item.itemId,
Office.MailboxEnums.RestVersion.v2_0
);
}
}
Что касается +
против _
, это сводится к формату кодирования. Существует несколько разновидностей Base64. Стандарт В стандарте Base64 62-й символ - +
, а 63-й - /
. Это создает проблему, когда вы хотите использовать Base64 в URL, так как +
и /
являются зарезервированными символами. Чтобы обойти это, вам нужен безопасный вариант URL Base64. Есть несколько таких вариантов. Наиболее распространенным является base64url (определенный в RFC 4648 ), который заменяет -
для 62-го и _
для 63-го.