Office js 使用Edge和IE的Office对话API存在问题

Office js 使用Edge和IE的Office对话API存在问题,office-js,outlook-web-addins,Office Js,Outlook Web Addins,我在React+Typescript Outlook加载项中使用Dialog API和Office.context.ui.displayDialogAsync()来实现一个特殊的登录流。用户需要首先使用Office 365进行身份验证,然后使用OAuth令牌和内部API,使用AzureADFS登录,以获取附加模块从中检索数据的另一个API的附加令牌。所有这些都在浏览器和Firefox上的Outlook Online以及Outlook桌面上运行良好。但是在Edge和IE中,对话框永远不会关闭,我也

我在React+Typescript Outlook加载项中使用Dialog API和Office.context.ui.displayDialogAsync()来实现一个特殊的登录流。用户需要首先使用Office 365进行身份验证,然后使用OAuth令牌和内部API,使用AzureADFS登录,以获取附加模块从中检索数据的另一个API的附加令牌。所有这些都在浏览器和Firefox上的Outlook Online以及Outlook桌面上运行良好。但是在Edge和IE中,对话框永远不会关闭,我也不会得到身份验证令牌

注意:我的登录实现基于以下示例:

我已经从外接程序中粗略地提取了登录过程的代码: (如果没有Office主机应用程序,它显然无法运行)

基本流程是:

  • 用户单击我的应用程序登录组件中的按钮
  • 调用Office.context.ui.displayDialogAsync('code&prompt=login&access\u type=offline&client\u id={CLIENTID}&tenant=common',{height:50,width:50},this.dialogCallback)
  • 用户使用O365/OAuth进行身份验证,然后重定向到内部AZADFS身份提供程序,让用户再次使用AD进行身份验证,成功后关闭对话框
  • 在它关闭后,对话框MessageReceivedHandler回调将启动,我提取id_标记和代码值,并使用它登录到内部web API
当Edge和IE托管外接程序时,存在两个类似但不同的问题:

1) 边缘:在Office.context.ui.displayDialogAsync之后激发的dialogCallback函数中传递给Dialog.addEventHandler的dialogMessageReceivedHandler回调未被命中。asyncResult的值在dialogCallback函数中为“successed”,因此没有错误。“将您带到组织的登录页面”页面只会旋转,第二个页面不会加载

2) IE:O365登录页面确实成功重定向到第二个AZADFS登录页面,因此用户可以输入他们的广告创意。但是,在他们提交凭据后,会触发对话框EventReceivedHandler并返回12006,这意味着用户取消了登录,但情况肯定不是这样,而是enter/submit/OK或其他。所以同样的问题是:dialogMessageReceivedHandler回调没有被命中


这是怎么回事?Edge和IE中是否存在与对话API不兼容的内容?或者我的实现中是否存在一个故障,奇迹般地只在Chrome和Firefox中工作?

您使用的是旧OWA还是新OWA(出现在右角的选项:尝试新outlook)?如果可能的话,你能和我们分享一下这个代码片段吗?两者都有。Stackblitz上有一个代码片段(我更新了应用程序的URL,而不是代码):。查看Login.tsx类;这与OfficeDev report中的示例几乎相同。您能否分享您面临此问题的IE/Edge版本。Edge:40.15063.674.0。IE:11.1387.15063.0对于问题(2),提交按钮是否关闭对话框?对于问题(1),请在私人模式下尝试一次,看看问题是否仍然存在。然而,这个问题似乎与加载项API无关。您是否使用旧OWA或新OWA(出现在右角的选项:试用新outlook)?如果可能的话,你能和我们分享一下这个代码片段吗?两者都有。Stackblitz上有一个代码片段(我更新了应用程序的URL,而不是代码):。查看Login.tsx类;这与OfficeDev report中的示例几乎相同。您能否分享您面临此问题的IE/Edge版本。Edge:40.15063.674.0。IE:11.1387.15063.0对于问题(2),提交按钮是否关闭对话框?对于问题(1),请在私人模式下尝试一次,看看问题是否仍然存在。然而,这个问题似乎与插件API无关