Я пытался использовать диалоговое окно для аутентификации. Диалоговое окно открывается, но не отправляет сообщение обратно через API messageParent, однако при добавлении displayInIframe в свойства диалога диалоговое окно не возникает. Но мы не можем использовать Iframe для аутентификации.
Вот диалог вызова функции,
function openDialog() {
console.log("openDialog");
Office.context.ui.displayDialogAsync("https://localhost:3000/src/auth/auth.html ", { height: 50, width: 50, promptBeforeOpen: false }, dialogCallback);
}
Часть файла web.config
module.exports = async(env, options) => {
const dev = options.mode === "development";
const config = {
devtool: "source-map",
entry: {
polyfill: "@babel/polyfill",
taskpane: "./src/taskpane/taskpane.js",
commands: "./src/commands/commands.js",
auth: "./src/auth/auth.js"
},
resolve: {
extensions: [".ts", ".tsx", ".html", ".js"]
},
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"]
}
}
},
{
test: /\.html$/,
exclude: /node_modules/,
use: "html-loader"
},
{
test: /\.(png|jpg|jpeg|gif)$/,
use: "file-loader"
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
filename: "taskpane.html",
template: "./src/taskpane/taskpane.html",
chunks: ["polyfill", "taskpane"]
}),
new CopyWebpackPlugin([{
to: "taskpane.css",
from: "./src/taskpane/taskpane.css"
}]),
new HtmlWebpackPlugin({
filename: "commands.html",
template: "./src/commands/commands.html",
chunks: ["polyfill", "commands"]
}),
new HtmlWebpackPlugin({
filename: "auth.html",
template: "./src/auth/auth.html",
chunks: ["polyfill", "dialog"]
}),
],
devServer: {
headers: {
"Access-Control-Allow-Origin": "*"
},
https: (options.https !== undefined) ? options.https : await devCerts.getHttpsServerOptions(),
port: process.env.npm_package_config_dev_server_port || 3000
}
};
Вот простое auth. js файл, который я использую для отладки,
Office.initialize = function() {
$('#button1').click(one);
};
function one() {
console.log("picked 1");
Office.context.ui.messageParent("Picked 1");
console.log("picked");
// Both the console lines are working in new window but messageParent not returning message
}