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