在 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