https://github.com/OfficeDev/Office-Add-in-Dialog-API-Simple-Example/blob/master/SimpleDialogSampleWeb/DialogHelper.js
我已经从这里的插件中粗略地提取了登录过程的代码:
https://stackblitz.com/edit/office-js-dialog-api
(如果没有Office主机应用程序,显然无法运行)
基本流程是:
-
用户在我的应用程序的登录组件中单击按钮
-
调用Office.context.ui.displayDialogAsync('
https://login.microsoftonline.com/common/oauth2/authorize?nonce=nonce01234&response_mode=fragment&redirect_uri=https://localhost:4200/redirect&response_type=id_token
code&prompt=login&access\u type=offline&client\u id={CLIENTID}&tenant=common',{height:50,width:50},this.dialogCallback)
-
用户使用O365/OAuth进行身份验证,然后重定向到内部AZADFS身份提供程序,让用户再次使用AD进行身份验证,如果成功,则关闭对话框
-
在它关闭之后,dialogMessageReceivedHandler回调将触发,我提取id_令牌和代码值,并使用它登录到内部web API
当Edge和IE托管外接程序时,有两个相似但不同的问题:
不会被击中
. dialogCallback函数中asyncResult的值为“succeeded”,因此没有错误。“将您带到组织的登录页”页只会旋转,第二个AZADFS页不会加载
怎么回事?Edge和IE中的对话API是否有不兼容的地方?或者在我的实现中是否有一个只在Chrome和Firefox中奇迹般地工作的错误?