0

我被困在如何从 Outlook Web 插件中的重定向页面 url 读取 url 参数/令牌。我正在使用 DialogAPI 弹出我的天蓝色应用程序登录/同意页面,然后尝试从重定向页面读取令牌。

我可以看到令牌已通过,但我不知道如何从 url 读取令牌?

function GetToken(url)
{
_dlg = Office.context.ui.displayDialogAsync(url, { height: 40, width: 40 }, function (result) {
                _dlg = result.value;
                _dlg.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
                Office.context.ui.messageParent(somevalue);
            });

}

除此之外 processMessage 回调永远不会被触发,想知道为什么?

伙计们,任何反馈都会有所帮助。

谢谢

4

2 回答 2

0

由于我是 Web 开发的新手,所以这是一个基本/简单的解决方案。我在 Outlook Web 加载项中创建了 html 页面作为重定向 URI,我们在 Azure 应用程序中指定将令牌发送到。然后使用 JavaScript,我可以解析包含访问令牌的 URL。

于 2020-08-04T01:08:08.580 回答
0

必须从主机页面调用 Office.context.ui.displayDialogAsync,并且必须从对话框调用 Office.context.ui.messageParent。

这应该在主机页面上:

var dialog;    
Office.context.ui.displayDialogAsync(url,
    {height: 40, width: 40}, function (result) {
         dialog = result.value;
             dialog.addEventHandler(Office.EventType.DialogMessageReceived, 
                 function(somevalue){ 
                     console.log(somevalue);});
    });

这应该在对话框中:

Office.initialize = function (reason) {
    $(document).ready(function () {
            Office.context.ui.messageParent(somevalue);
    }
}

在您的清单中,必须使用“https”访问所有域。

  1. URL 使用 HTTPS 协议。这对于对话框中加载的所有页面都是强制性的,而不仅仅是加载的第一页。
  2. 对话框的域与宿主页面的域相同,可以是任务窗格中的页面,也可以是加载项命令的函数文件。这是必需的:传递给 displayDialogAsync 方法的页面、控制器方法或其他资源必须与主机页面位于同一域中。

访问此处了解更多信息。

于 2020-07-31T10:25:48.113 回答