Microsoft Graph Beta - конвертировать из EwsId в RestId или RestImmutableEntryId - PullRequest
2 голосов
/ 09 апреля 2019

Я пытаюсь преобразовать EwsId в RestId или RestImmutableEntryId, используя бета-версию Microsoft Graph.

Он прекрасно работает для конвертации RestId с в RestImmutableEntryId с, но пока не получится конвертировать из EwsId.Документация по понятным причинам не является достаточной в данный момент, поскольку она находится в бета-версии, но Я нашел некоторую документацию , в которой говорится, что это возможно:

Примечание: Вы также можете использовать translateExchangeIds для переноса приложений веб-служб Exchange в Microsoft Graph ".

Что я сделал, так это извлек Id из файла .msg и преобразовал его вСтрока Base64 и отправил запрос на преобразование:

var client = new GraphServiceClient(etc..);
var messageId = Convert.ToBase64String(
    System.Text.Encoding.UTF8.GetBytes("<someId@something.prod.outlook.com>")
);

var req = client
    .Me
    .TranslateExchangeIds(new [] { messageId },
        ExchangeIdFormat.RestImmutableEntryId,
        ExchangeIdFormat.EwsId);

var translateExchangeIdsCollectionPage = await req.Request().PostAsync();

Я ожидаю получить ConvertIdResult назад, но вместо этого я получаю Microsoft.Graph.GenericError

"[IdConverter:: IsPublicFolder] Неверный идентификатор сжатия "`

Мне не удалось найти какую-либо документацию, связанную с этой ошибкой, и что делать, чтобы исправить ее. Я не эксперт по Outlook, поэтомунасколько я знаю, я использую неправильный идентификатор или что-то в этом роде.

1 Ответ

0 голосов
/ 09 апреля 2019

Вам нужно использовать HttpServerUtility.UrlTokenEncode вместо Convert.ToBase64String.

Хотя обе эти команды технически генерируют строку в кодировке Base64, в кодировке есть некоторые тонкие различия.Это связано с тем, что Base64 считает символы +, / и = действительными, а URL-адреса - нет.Чтобы справиться с этим, RFC 4648 определяет кодировку base64url, в которой используются только безопасные символы URL.Exchange использует эту кодировку Base64Url для кодирования идентификаторов.

...