javascript - 如何在 Electron/Firebase 应用中支持 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');
我不想这样做,因为拥有托管页面会大大降低拥有原生应用程序的吸引力。
我可以通过让一个本地 Node/Express 实例在本地使用get-port为应用程序提供服务来找到一个空闲端口来在那里运行应用程序来完成这项工作。我还没有真正看到任何例子表明这一点。有一些关于让它工作的 Stackoverflow 问题,但没有什么让我认为它是一个可接受的生产级解决方案。
本地 Express 服务器是规避此错误的可接受方式,还是目前有更好的解决方案?
解决方案
我已经在我的应用程序中成功实现了 firebase 电子邮件版本,加载 .html 文件而不是从 url 加载页面更可行,因为用户可以通过发送虚假数据来利用 url。但是使用 oauth 是不可能的,firebase 创建 webapp 您可以创建一个 html 文件,它应该包含 api 密钥、主机 url 等并将其托管在本地 android 文件中://android_assets/filename.html 即使离线也可以正常工作我不知道正确关于电子
推荐阅读
- r - 在闪亮的应用程序中将绘图显示到特定的 tabPanles
- dc.js - 堆积条形图可能无法反映更改的颜色
- apache-kafka - Kafka连接jdbc在视图的情况下不起作用
- java - Server站点异步处理请求时如何实现同步通信
- excel - 间接公式从变量而不是单元格区域获取值?
- excel - 求和某些月份但忽略空白单元格的公式
- ios - Swift init 方法错误:声明“init(coder:)”不能覆盖多个超类声明
- react-hooks - 这个 React 自定义 Hook 有什么问题?
- flutter - 我们如何在 Flutter for web 中显示吐司或小吃店?
- delphi - 是否允许 Delphi TAction 处理的 ShortCut-Key 进一步传播到其他组件?