+-
如何在ElectronFirebase应用中支持HTTP协议?

我正在尝试在我的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."

谷歌发现 这篇技巧和窍门文章 其中建议使用托管的URL即可。

第三,OAuth请求需要有一个可验证的源头,可以在Firebase控制台中进行白名单。这就要求当前Electron浏览器窗口使用http或https协议,而不是文件。也就是说当前窗口内容应该用 browserWindow.loadURL 加载,而不是 browserWindow.loadFile,而且 url 必须是 http 或 https url,而不是 file:/ url。这一般需要在某个地方建立一个托管页面,并将其封装到Electron窗口中。

这可能会奏效,因为只要在本地运行应用在angular开发服务器上就可以了,只要使用。

mainWindow.loadURL('http://localhost:4200');

我不想这样做,因为有一个托管页面会降低本地应用的吸引力。

我可以通过让本地NodeExpress实例在本地使用以下方法来实现这一点 获取端口 以找到一个免费的端口来运行这个应用程序。我还没有看到任何例子说明这一点。在Stackoverflow上有一些关于如何让它工作的问题,但没有任何问题让我认为这是一个可接受的生产级解决方案。

本地Express服务器是一个可以接受的方法来规避这个错误,或者目前有更好的解决方案吗?

请注意。这个包 建议在 本回答 并不是由Firebase发布的,而且看起来也不支持SAML认证。

0
投票

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