Office.js - 如何获取有关错误 13006 的更多信息

问题描述 投票:0回答:1

我正在开发 Outlook 的 Office 加载项。目前,当我在 OWA 和 Outlook 桌面本地运行它时,它可以工作。

当我部署它并在不进行调试的情况下运行它时,在 Outlook 桌面中,当我尝试启动加载项时,我收到此消息:

我认为发生这种情况是因为 SSO 失败并且它试图回退到 MSAL 身份验证,而这在 Outlook 桌面中无法正常工作(下面对此有更多介绍)。

我这样做的原因是,当我在 OWA 中运行它时,我收到 MSAL 弹出窗口,并且可以看到记录了以下错误:

Office auth failed, falling back to MSAL.
Error:  OSF.DDA.Error 
{
    name: 'Error occurred in the authentication request from Office.',
    message: 'An unexpected error occurred in the client.',
    code: 13006
}

第一行是我自己从

Office.auth.getAccessToken()
周围的 catch 块记录的内容。但是,在此之后,加载项确实可以在 OWA 中完全按照预期工作,包括经过身份验证的 API 调用(我可以将令牌视为这些请求的标头)。但正如前面提到的,如果我尝试在 Outlook 桌面中运行它,我会看到此对话框,并且它不会回退到 MSAL。

顺便说一句,我认为这种情况不应该发生,因为我已将其配置为允许登录提示和同意提示:

token = await Office.auth.getAccessToken({ allowSignInPrompt: true, allowConsentPrompt: true, forMSGraphAccess: false });

因此,即使 SSO 失败,用户仍然应该能够登录。但一次只会出现一个问题。

当我最初测试这个时,我看到了类似的行为,即我看到 OWA 中记录了此错误,并且我会在桌面中看到此对话框。不过,我在 OWA 中解决了这个问题,方法是确保清单中的所有域都匹配(就源而言,在

AppDomains
部分中列出,以及在 Azure 中的应用程序注册中的应用程序 ID URI 中列出)。当我在 OWA 中没有看到此错误时,我在 Outlook 桌面中也没有看到该对话框。

我认为这可能是相关的,因为显然在本地测试时域是

localhost
,而部署时不是这样,所以这两者之间是不同的。然而,据我所知,清单中的每个 URL 都是正确的。唯一的区别在于联系后端 - 在本地运行时,它看起来有点像这样:

组件 本地 已部署
插件 本地主机:3000 plugin.mydomain.com
后端 本地主机:4000 app.mydomain.com

我在清单中将

mydomain.com
app.mydomain.com
plugin.mydomain.com
列为应用程序域。我还验证了 Azure 中的应用程序注册、应用程序 ID 和范围是正确的,因为 a) 它在 OWA 中工作,b) 它在后端应用程序中工作(有自己的 SPA UI)。

我还需要检查什么?如何获取有关导致 13006 错误的原因的更多信息?

编辑:仍在研究此问题,但我认为问题是后端和加载项需要从同一域/子域运行。如果属实,这将是一个用于部署的 PITA,但可能是我的问题的原因。会确认。

outlook office-js outlook-addin office-addins
1个回答
0
投票

正如怀疑的那样,这个问题是由不同的子域引起的。在清单中,您指定

Resource
,它是 Azure 中应用程序注册中的应用程序 ID URI。此 URI 的域和子域必须与加载加载项的 URI 的域和子域匹配。

在我的例子中,加载项是从

plugin.mydomain.com
加载的,但它与位于
app.mydomain.com
的后端进行通信。所以应用程序 ID URI 是
api://app.mydomain.com/[some guid]
。这有效地破坏了 SSO(尽管 MSAL 仍然有效)。

除了从同一子域托管我的后端和加载项之外,实际上没有任何办法解决这个问题。因此,作为一个简单的解决方法,我刚刚将后端注册中的应用程序 ID URI 更改为

api://plugin.mydomain.com/[some guid]
,现在 SSO 可以正常工作,并且我可以在 OWA 和 Outlook 桌面中使用该加载项。这是相当不优雅的,但这是我为了让它工作而必须做出的最小的妥协。

© www.soinside.com 2019 - 2024. All rights reserved.