使用Office-js-helpers或Office.context.ui.displayDialogAsync的错误12002

时间:2019-05-21 11:47:18

标签: office-js outlook-web-addins office-js-helpers

我正在使用Office-js-helpers和Office.context.ui.displayDialogAsync在我们的Outlook加载项中对用户进行身份验证。对话框将正常打开,我可以使用我们的IdentityServer4网址进行身份验证(例如,使用redirectUrl window.location.origin进行/ connect / authenticate)。但是,如果我的外接程序文件夹中没有Index.html,则DialogEventReceived处理程序中会出现12002错误,这意味着对话框无法加载url。如果我在加载项的文件夹中添加Index.html(例如window.location.origin为https://localhost:44352/Index.html),则不会出现此错误-但是什么也没有发生。 DialogMessageReceived句柄永远不会触发。使用office-js的Authenticator.authenticate和displayDialogAsync,我得到了相同的行为。

请参见下面的代码片段,这些代码片段在对话框中的身份验证很好,但是由于DialogMessageReceived从不触发或出错,因此我无法获得令牌/代码。

使用Office-js-helpers

authenticator.endpoints.add("RM", {
                provider: 'RM',
                clientId: "MyClientId",
                baseUrl: "MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer",
                authorizeUrl: "/connect/authorize",
                tokenUrl: "MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer/connect/token",
                redirectUrl: window.location.origin,    
                responseType: "code",
                state: true,
                scope: "openid profile onelist offline_access"
            });

authenticator.authenticate('RM', true)
                        .then(function (token) {
                            showNotification("Token: " + prettify(token));
                        })
                        .catch(function (error) {
                            showNotification("No Token: " + prettify(error));
                        });

使用对话框API

Office.context.ui.displayDialogAsync("MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer/connect/authorize?response_type=code&client_id=MyClientID&redirect_uri=https%3A%2F%2Flocalhost%3A44352&scope=openid%20profile%20MyProfile%20offline_access&state=3364575774",
                        { height: 500, width: 500 }, 
                            function (asyncResult) {
                                dialog = asyncResult.value;
                                dialog.addEventHandler(Office.EventType.DialogMessageReceived, function (args) {
                                    showNotification(prettify(args.message));
                                    dialog.close();
                                });
                                dialog.addEventHandler(Office.EventType.DialogEventReceived, function (args) {
                                    showNotification(prettify(args.error));
                                    dialog.close();
                                });
                            }
                        );

请帮助:) 我想念什么或做错什么了?

0 个答案:

没有答案