我正在做一个gig,这是一个Office (Excel) 2016插件,用于与web应用程序进行数据集成。我们使用的是Office JS API, XML清单文件指向一个AngularJS web应用程序。到目前为止,一切正常,工作正常。
最近,我们决定在web应用程序中添加OAuth2功能,以便用户可以通过第三方授权服务器进行身份验证。
问题是,一旦我放了一个链接(<a>
标签)或运行window.location.replace()
或设置window.location.href
,其中指向一个与清单文件中提到的主机名不同的URL,它在新窗口中打开URL,而我希望它只是重定向到加载项窗口内的URL。
有人知道怎么解决这个问题吗?
谢谢
要在加载项窗口中打开url,您需要在Manifest文件的AppDomains部分中为该url的域添加一个条目。例如,下面的代码片段展示了如何让www.northwindtraders.com上的链接出现在www.contoso.com上托管的外接程序中。
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
<Id>c6890c26-5bbb-40ed-a321-37f07909a2f0</Id>
<Version>1.0</Version>
<ProviderName>Contoso, Ltd</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Northwind Traders Excel" />
<Description DefaultValue="Search Northwind Traders data from Excel"/>
<AppDomains>
<AppDomain>https://www.northwindtraders.com</AppDomain>
</AppDomains>
<DefaultSettings>
<SourceLocation DefaultValue="https://www.contoso.com/search_app/Default.aspx" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>