在 Word 加载项中使用 Firebase 弹出式身份验证时出错
Getting error using Firebase popup authentication in Word add-in
我已经在使用 Firebase 对其他(相关)项目进行身份验证,并希望坚持使用它。
将 Firebase 与 Word 加载项一起使用似乎具有挑战性。在 Windows 上你被困在 IE11 和 Mac 上(对我来说至关重要)用于加载任务窗格的浏览器是 webkit,而不是默认浏览器。
如果我使用 signInWithRedirect
(Google 和 Facebook),我可以在 Windows 上获得身份验证以正常工作。
但这不适用于 Mac。使用 signInWithRedirect
会在默认浏览器中打开一个新选项卡,该选项卡不会与加载项实际使用的 webkit 浏览器共享 cookies/data。
当我切换到 signInWithPopup
时,我得到:
There is no application set to open the URL about:invalid%23zClosurez.
在 Windows 我得到一个 IE11 window 弹出窗口,一瞬间,它包含 about:invalid%23zClosurez URL.
我在加载项 XML 清单中调用了应用程序域:
<AppDomains>
<AppDomain>https://writeitwithme-a114a.firebaseapp.com</AppDomain>
<AppDomain>https://www.firebaseapp.com</AppDomain>
<AppDomain>https://www.googleapis.com</AppDomain>
<AppDomain>https://www.facebook.com</AppDomain>
</AppDomains>
感谢任何帮助。最坏的情况是,我放弃了通过 Firebase 手动注册 Mac,但似乎很遗憾不得不放弃。
只是为以后发现这个的人记录。
- 在为 Mac 创建 add-in 时,我不知道如何使用 Firebase 社交登录。每个身份验证 window 在默认浏览器中打开,而不是 Word 在 Mac 上使用的 webkit 引擎。坚持手动登录有效。
- IE11 在使用 localhost 时总是很挑剔。我在别处测试,然后实时推送文件,然后尝试 IE11 和社交 + 手动登录(通过弹出窗口)工作正常。
我从 Microsoft 文档中找到了以下资源,这些资源对我来说更容易:
https://docs.microsoft.com/en-us/office/dev/add-ins/develop/dialog-api-in-office-add-ins
基本上你需要调用来打开一个对话框:
Office
.context
.UI
.displayDialogAsync(
'https://myDomain/myDialog.html',
{height: 30, width: 20, displayInIframe: true}
);
然后您可以创建自己的页面,该页面执行登录流程并通过 messageParent
方法将消息(可能是某种凭证)传递回您的插件:
Office.context.ui.messageParent(googleProfile);
从那里您可以执行以下操作以使用 add-in 中提供的凭据登录:
firebase.auth().signInWithCredential(credential)
另外,在构建对话框的 URL 时要非常小心。我浪费了几个小时不知道来自原点 URL 的 _host_Info
参数会把事情搞砸(我正在从原点 URL 构建我的新 URL)。在这个 github 问题中弄清楚了:https://github.com/OfficeDev/office-js/issues/378
我已经在使用 Firebase 对其他(相关)项目进行身份验证,并希望坚持使用它。
将 Firebase 与 Word 加载项一起使用似乎具有挑战性。在 Windows 上你被困在 IE11 和 Mac 上(对我来说至关重要)用于加载任务窗格的浏览器是 webkit,而不是默认浏览器。
如果我使用 signInWithRedirect
(Google 和 Facebook),我可以在 Windows 上获得身份验证以正常工作。
但这不适用于 Mac。使用 signInWithRedirect
会在默认浏览器中打开一个新选项卡,该选项卡不会与加载项实际使用的 webkit 浏览器共享 cookies/data。
当我切换到 signInWithPopup
时,我得到:
There is no application set to open the URL about:invalid%23zClosurez.
在 Windows 我得到一个 IE11 window 弹出窗口,一瞬间,它包含 about:invalid%23zClosurez URL.
我在加载项 XML 清单中调用了应用程序域:
<AppDomains>
<AppDomain>https://writeitwithme-a114a.firebaseapp.com</AppDomain>
<AppDomain>https://www.firebaseapp.com</AppDomain>
<AppDomain>https://www.googleapis.com</AppDomain>
<AppDomain>https://www.facebook.com</AppDomain>
</AppDomains>
感谢任何帮助。最坏的情况是,我放弃了通过 Firebase 手动注册 Mac,但似乎很遗憾不得不放弃。
只是为以后发现这个的人记录。
- 在为 Mac 创建 add-in 时,我不知道如何使用 Firebase 社交登录。每个身份验证 window 在默认浏览器中打开,而不是 Word 在 Mac 上使用的 webkit 引擎。坚持手动登录有效。
- IE11 在使用 localhost 时总是很挑剔。我在别处测试,然后实时推送文件,然后尝试 IE11 和社交 + 手动登录(通过弹出窗口)工作正常。
我从 Microsoft 文档中找到了以下资源,这些资源对我来说更容易:
https://docs.microsoft.com/en-us/office/dev/add-ins/develop/dialog-api-in-office-add-ins
基本上你需要调用来打开一个对话框:
Office
.context
.UI
.displayDialogAsync(
'https://myDomain/myDialog.html',
{height: 30, width: 20, displayInIframe: true}
);
然后您可以创建自己的页面,该页面执行登录流程并通过 messageParent
方法将消息(可能是某种凭证)传递回您的插件:
Office.context.ui.messageParent(googleProfile);
从那里您可以执行以下操作以使用 add-in 中提供的凭据登录:
firebase.auth().signInWithCredential(credential)
另外,在构建对话框的 URL 时要非常小心。我浪费了几个小时不知道来自原点 URL 的 _host_Info
参数会把事情搞砸(我正在从原点 URL 构建我的新 URL)。在这个 github 问题中弄清楚了:https://github.com/OfficeDev/office-js/issues/378