如何在 Electron/Firebase App 中支持 HTTP 协议

125*_*748 8 javascript node.js firebase electron firebase-authentication

我正在尝试在我的 Electron 应用程序中使用 Firebase 身份验证 (saml)。我已经读到 Electron 不是“官方支持的”,但是我也遇到了一些表明人们已经开始使用它的线程。我的问题是在使用firebase.auth().signInWithRedirect(或signInWithPopup)时,出现错误:

 code: "auth/operation-not-supported-in-this-environment"
 message: "This operation is not supported in the environment this application
 is running on. "location.protocol" must be http, https or chrome-extension and 
 web storage must be enabled."
Run Code Online (Sandbox Code Playgroud)

Google 翻出了这篇提示和技巧文章,其中建议只使用托管 URL:

第三,OAuth 请求需要有一个可验证的来源,可以在 Firebase 控制台中列入白名单。这需要当前的 Electron 浏览器窗口使用 http 或 https 协议,而不是文件。这意味着当前窗口内容应该使用 browserWindow.loadURL 而不是 browserWindow.loadFile 加载,并且 url 必须是 http 或 https url,而不是 file:// url。这通常需要在某个地方有一个托管页面,该页面被包装到 Electron 窗口中。

这可能会起作用,因为只需在 angular 开发服务器上本地运行应用程序,只需使用:

mainWindow.loadURL('http://localhost:4200');
Run Code Online (Sandbox Code Playgroud)

我不想这样做,因为拥有托管页面会降低拥有本机应用程序的吸引力。

我可以通过让本地 Node/Express 实例使用get-port在本地为应用程序提供服务来找到一个免费端口来在那里运行应用程序来完成这项工作。我还没有真正看到任何显示这一点的例子。有一些关于让它工作的 Stackoverflow 问题,但没有什么让我认为它是一个可以接受的生产级解决方案。

本地 Express 服务器是规避此错误的可接受方式,还是目前有更好的解决方案?

注意:这个答案中推荐的包不是由 Firebase 发布的,无论如何它看起来不支持 SAML 身份验证。

小智 -1

我已经在我的应用程序中成功实现了 firebase email 版本,加载 .html 文件比从 url 加载页面更可行,因为用户可以通过发送虚假数据来利用 url。但使用oauth这是不可能的,firebase创建webapp你可以创建一个html文件,它应该包含api密钥,主机url等并将其托管在android文件中://android_assets/filename.html即使离线也可以正常工作我不知道正确关于电子