In this article I am going to introduce the <AppDomains> parameter within an Office Add-In Manifest. Using this parameter we are going to see how you can change the URL within an Add-In and consider the possibilities that brings us.
I was casually reading through the thrilling “Office Add-ins XML Manifest” (http://dev.office.com/docs/add-ins/overview/add-in-manifests) and I came across this casual comment:
“By default, if your add-in tries to go to a URL in a domain other than the domain that hosts the start page (as specified in the SourceLocation element of the manifest file), that URL will open in a new browser window outside the add-in pane of the Office host application. This default behavior protects the user against unexpected page navigation within the add-in pane from embedded iframe elements.
To override this behavior, specify each domain you want to open in the add-in window in the list of domains specified in the AppDomainselement of the manifest file. If the add-in tries to go to a URL in a domain that isn’t in the list, that URL will open in a new browser window (outside the add-in pane).”
This was the exact problem I had when I came up with the O365Token solution on how to Authenticate an Add-in to O365 and ended up using a window.open() solution. When I tried to do the OAuth redirect it failed because it opened a whole new Internet Explorer instance which did not communicate with the Add-in parent.
The published solution works but is a somewhat poor user experience due to the Internet Explorer window opening up. But hey it worked so I went with it.
The problem demonstrated
I am demonstrating this issue using firebuglite in one of my existing Add-ins. I change the location.href of the Add-in (in Outlook) and the requested website opens up in a fresh Internet Explorer window.
Proof of concept
I created a simple addition to my manifest file:
<AppDomains> <AppDomain>https://login.windows.net</AppDomain> <AppDomain>https://login.microsoftonline.com</AppDomain> </AppDomains>
I uploaded the new file through the Exchange admin portal, refreshed it for the user and tested it again
and look at that – it opened within the Add-in without issue.
In this article I have demonstrated how using the <AppDomains> parameter within the manifest file we are able to change the website loaded within the Add-in
Next – how do we re-write the O365Token to load nicely in this window?