EWS ExchangeService.GetAttachments, возвращающий 401 несанкционированный с использованием OAuthCredentials - PullRequest
0 голосов
/ 27 декабря 2018

В настоящее время я разрабатываю угловую надстройку для Outlook, и часть функций для этой надстройки требует, чтобы моя удаленная служба получала вложения электронной почты из Outlook.

Я подписан на эта ссылка на Документы здесь в отношении моей функциональности.

Так что в настоящее время я могу получить attachmentToken через Office.js в своем угловом коде и передать его вместе с ExchangeWebServiceURL моей удаленной службе:

Office.context.mailbox.getCallbackTokenAsync((result) => {
  if (result.status === Office.AsyncResultStatus.Succeeded) {
    this.outlookServiceRequest.attachmentToken = result.value;
  }
});

Однако, как только я попал сюда:

                ExchangeService exchangeService = new ExchangeService();
            exchangeService.Url = new Uri(attachmentsRequest.exchangeWebServiceUrl);
            exchangeService.Credentials = new OAuthCredentials(attachmentsRequest.attachmentToken);

            var attachmentIds = new List<string>();
            foreach (OutlookAttachmentDetails attachment in attachmentsRequest.AttachmentArray)
            {
                attachmentIds.Add(attachment.id);
            }

            var attachmentResponses = exchangeService.GetAttachments(attachmentIds.ToArray(), null, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent));

Процесс завершится неудачно при вызове GetAttachments со ссылкой на 401 несанкционированную ошибку из ExchangeWebServiceUrl.

У меня естьогляделся, но не увидел никого, кто сталкивался с этой проблемой;Я установил разрешения в манифесте для моей надстройки для ReadWriteMailbox, однако проблема все еще возникает.

Я пробовал это, запустив его на клиенте Office для настольных ПК и в Chrome, используя версию веб-браузера дляOutlook, но получаю ту же проблему.

Кто-нибудь сталкивался с этим раньше?

РЕДАКТИРОВАТЬ: я должен отметить, что я могу получить доступ к веб-службе Exchange, если я установил учетные данные на

exchangeService.Credentials = new WebCredentials("myUsername", "MyPassword");

Так что, похоже, что-то с токеном обратного вызова.

Декодированный токен возвращает следующее:

{"nameid": "641fdcd4-10dd-4441-ac93-41f519e4ad41@venom.local ",
" ver ":" Exchange.Callback.V1 "," appctxsender ":" https://localhost:44364/AddinClient@venom.local", "appctx": "{\" smtp \ ": \"MyEmail \", \ "Объем \": \ "ParentItemId: AAMkAGY3N2QyYzI2LWRhZTUtNGU3My05MzFmLTYwZGZhZmYyN2QzOQBGAAAAAAAdJ5 + qR8pATpmqkddPNb2NBwBgP9yTrGVtSIiRWRnnYVBWAAAAAAEMAABgP9yTrGVtSIiRWRnnYVBWAAA5fvGXAAA = \"} " "ISS": "00000002-0000-0ff1-ce00-000000000000@venom.local", "ауд":" 00000002-0000-0ff1-ce00-000000000000/outlook.myemailonline.co.uk@venom.local "," exp ": 1546249394," nbf ": 1546249094}

Ошибка, которую я получаю при попыткевызов метода GetAttachments:

Запрос не выполнен.Удаленный сервер возвратил ошибку: (401) Несанкционированный

Мой EWS маркер из обратного вызова:

"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InZDcjV1QmxZTmlXZk9udC1iQlFxVXhXYXBaRSJ9..boWZO1RJ5FWAxvh0RHek8ebW_j8mbR2ODpSUry0VDeAM6iq2aVYfg_mMUk2kPA4MNCmngJNUv02sAKA82ULlKWevmAo-i2j3AYNjVpmIwBhovaX64SozC0lLSoqC-advp8NsjN0rxV7jn65SD6PP7HE2p-Kc9cDMB9aHpgQY-eUGxkU-dfFvQiAMClPe_eXspW1hUil7prx0wMWUl9fJbsFQgPQMr4dQkYKuCk7DUA3Ih8l_yl1qtySJjrlnrR6EpYlazJQ6sO5V5eb-CMGlcjERyR0UByLwakQpZixnKeu1bs5gs2AYpfOozhFHXvlVCbTxUWlybEWnAbob_bbEaQ "

1045 *
...