#azure #outlook #microsoft-graph-api #outlook-addin #outlook-web-addins
Вопрос:
Я сталкиваюсь с проблемой уже несколько недель, и мне действительно нужна ваша помощь.
В настоящее время я разрабатываю надстройку Outlook на Javascript для кода Visual Studio, сгенерированного с помощью Yeoman (yo office) для моей компании, которая должна перемещать почту в папку нежелательной почты, когда пользователи нажимают кнопку «Выполнить» на панели задач.
Надстройка отлично работает в веб-версии (OWA), когда я нажимаю кнопку «Выполнить», но не на настольном клиенте. В настольном клиенте он открывает новую вкладку в моем браузере по умолчанию (Chrome) и перенаправляет меня в HTML-файл моей панели задач.
Надстройка размещена в Azure, но в учетной записи хранилища («.z6.web.core.windows.net/», не «.azurewebsites.com/»), и приложение зарегистрировано в Azure. При регистрации приложения я создал две платформы, одну для Интернета и одну для настольной версии (собственное приложение), но я не уверен, что это правильный способ сделать это. Идентификатор и маркеры доступа включены для неявных и гибридных потоков и настроены как уникальный клиент. Потоки публичных клиентов запрещены.
Я создал новый проект, чтобы показать вам свою проблему, это код :
import {UserAgentApplication} from "msal";
import {ImplicitMSALAuthenticationProvider} from "@microsoft/microsoft-graph-client";
import {MSALAuthenticationProviderOptions} from "@microsoft/microsoft-graph-client";
import {Client} from "@microsoft/microsoft-graph-client";
/* global document, Office */
Office.onReady((info) => {
if (info.host === Office.HostType.Outlook) {
document.getElementById("sideload-msg").style.display = "none";
document.getElementById("app-body").style.display = "flex";
document.getElementById("run").onclick = run;
}
});
export async function run() {
// Configuration Microsoft Graph
const msalConfig = {
auth: {
clientId: "<client-ID>",
redirectUri: "https://synphishtest.z6.web.core.windows.net/",
authority: "https://login.microsoftonline.com/<tenant-ID>/",
scopes : "user.read, mail.readwrite",
loginType: "redirect"
}
};
// Connect to MS Graph
const graphScopes = ["user.read", "mail.readwrite"];
const msalApplication = new UserAgentApplication(msalConfig);
const options = new MSALAuthenticationProviderOptions(graphScopes);
const authProvider = new ImplicitMSALAuthenticationProvider(msalApplication,options);
const MSALoptions = {authProvider};
const client = Client.initWithMiddleware(MSALoptions);
// Get the mail ID
var idMail = JSON.stringify(Office.context.mailbox.item.itemId).replaceAll('/','-');
const junkMail = {destinationId: 'junkemail'};
// Move the mail to the junk folder
(async () => {
await client.api('/me/messages/' idMail '/move').post(junkMail);
})();
}
Я использую модули «msal» версии 1.4.14 и «@microsoft/microsof-graph-клиент» версии 2.2.1.
Поскольку у меня возникли некоторые трудности с отладкой кода VS, я использую предварительный просмотр Microsoft Edge DevTools для «отладки» моей надстройки. Когда он открывает новую вкладку в Chrome, я вижу, что en Edge выдает следующую ошибку : «Ошибка при открытии всплывающего окна. Это может произойти, если вы используете IE или если всплывающие окна заблокированы в браузере». Я не использую Internet Explorer, и всплывающие окна разрешены в Chrome. Однажды я как-то решил эту проблему, но не помню, как я это сделал.
И когда я открываю консоль Chrome на открывшейся новой вкладке, у меня появляется следующее предупреждение : «Office.js загружается за пределами офисного клиента». Таким образом, в настольной версии он открывает новую вкладку и не перемещает мою почту в папку нежелательной почты, но в веб-версии новая вкладка не открывается, и почта перемещается в папку нежелательной почты.
Вкладка открывается только тогда, когда программа находится здесь :
// Move the mail to the junk folder
(async () => {
await client.api('/me/messages/' idMail '/move').post(junkMail);
})();
Можете ли вы помочь мне сделать так, чтобы моя надстройка работала на настольном клиенте ?
Заранее спасибо за ваши ответы.
Комментарии:
1. Когда вы делаете запрос на публикацию, можете ли вы проверить ответ на наличие успеха/ошибки? Есть ли возвращенная ошибка?
2. Вы также можете попробовать добавить соответствующие домены в раздел <домены приложений> своего манифеста. docs.microsoft.com/en-us/office/dev/add-ins/reference/manifest/…
3. Проблема в том, что запросы, сделанные из настольного клиента и веб-версии, не совпадают с тем, что я вижу на Fiddler.
4. В моем манифесте добавлены 3 ссылки : веб-сайт моей компании, веб-сайт портала поддержки моей компании и ссылка на панель задач моей надстройки ( synphishtest.z6.web.core.windows.net ). Я не понимаю, почему я должен добавлять еще одну ссылку в свой манифест, если он работает в веб-версии.
5. Чем отличается запрос, сделанный из настольного клиента, от веб-версии? Поскольку вы используете одну и ту же надстройку, я ожидаю, что они будут в основном одинаковыми.