Вам нужен локальный сервер обмена для вызова makeEwsRequestAsyn c? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать надстройку для Outlook, используя офис. js. Уже неделю я получаю ошибку accessRestricted при использовании makeEwsRequestAsyn c. Когда я снова читаю документацию, он говорит, что я должен явно установить для oauthentication значение true на сервере Exchange. Когда я проверяю, как установить для oauthentication значение true, вверху страницы я вижу, что команда существует только на локальном сервере обмена. Я купил онлайн сервер обмена, и указанная команда не работает в моей среде. Я жаловался в Microsoft на то, что они должны были поместить эту информацию на первый план, но кто-то из Microsoft сообщил мне и сказал, что для oauthentication автоматически устанавливается значение true при использовании обмена через Интернет. Это похоже на ложь, потому что я получаю ту же ошибку, используя мою учетную запись администратора обмена в Интернете. Я разместил сообщение об ошибке ниже. Кажется очевидным, что сообщение об ошибке связано с неправильной конфигурацией, но я также разместил свой код ниже.

picture of the error messages

 function getCreateFolderXMLRequest(request) {
  /*
  example request parameter
  <t:Folder>
    <t:DisplayName>Folder1</t:DisplayName>
  </t:Folder>
  <t:Folder>
    <t:DisplayName>Folder2</t:DisplayName>
  </t:Folder>
  */

  var completeRequest =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/ "' +
    '               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">' +
    "      <soap:Body>" +
    '          <CreateFolder xmlns="https://schemas.microsoft.com/exchange/services/2006/messages">' +
    "              <ParentFolderId>" +
    '                  <t:DistinguishedFolderId Id="msgfolderroot"/>' +
    "              </ParentFolderId>" +
    "              <Folders>" +
    request +
    "              </Folders>" +
    "          </CreateFolder>" +
    "      </soap:Body>" +
    "</soap:Envelope>";

  return completeRequest;
}

export default function createFolders(listOfFolders, callback) {
  const folderHeader = "<t:Folder> <t:DisplayName>";
  const folderFooter = "</t:DisplayName> </t:Folder>";
  var xmlFolders = [];
  for (var folderName of listOfFolders) {
    xmlFolders.push(folderHeader + folderName + folderFooter);
  }

  const folderXMLRequest = getCreateFolderXMLRequest(xmlFolders.join(" "));
  Office.onReady(() => {
    Office.context.mailbox.makeEwsRequestAsync(folderXMLRequest, callback);
  });
}

1 Ответ

0 голосов
/ 27 апреля 2020

Я бы сказал, что да, потому что документация предоставляет два способа настройки oauth и оба явно указывают, что это должен быть локальный сервер обмена. https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/web-services#authentication и-разрешения-соображения-для-makeewsrequestasyn c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...