如何在 Electron 桌面应用程序中使用 Google 登录?

问题描述 投票:0回答:2

我正在使用 Node.js 和 Express 制作一个简单的应用程序。它严重依赖 Google 登录来获取个人资料图片和昵称,当在新的 Electron 应用程序中测试它时,我遇到了错误 -

”此浏览器或应用程序可能不安全

尝试使用不同的浏览器。如果您已经在使用受支持的浏览器,您可以刷新屏幕并再次尝试登录。”

- 尝试使用 Google 登录时。我曾短暂考虑过在用户浏览器内打开登录,然后意识到这不会将详细信息传递回应用程序。我在网上找到的很多解决方案都依赖于 Firebase,但我没有使用它。

有没有办法将数据从浏览器发送回应用程序?或者我还没有考虑过的其他解决方案?

javascript node.js express electron google-signin
2个回答
10
投票

您不需要 firebase 来执行此操作。您可以通过将用户带到他们的常规浏览器并再次返回来完成此操作。可以将详细信息传递回应用程序。我们在Amna这样做。

它涉及更多一点(但对任何其他提供商也很有用)。我假设您之前使用过某种 OAuth 提供程序。

  1. 在您的

    Electron
    应用程序中注册自定义 URL 处理程序(例如
    myapp://
    。您可以使用
    protocol
    执行此操作)。我们使用了 electron-deeplink

  2. 在您的应用程序的网站上,设置一个可以启动您的应用程序的侧页。例如,我们有一个 authorize 页面来启动我们的应用程序。您想将此网站注册为 Google 的

    redirect url
    ,因此当 Google 点击此网址时,它会将验证令牌传递给它。您可以在这里进行任何 OAuth 工作。

  3. 最后,从您的网站调用应用程序的网址处理程序。

    myapp://authorize?code=XYZ
    。这会将所有数据发送回您的主应用程序。

deeplink.on('received', (link) => {
    // parse out the code from the stuff here
});
  1. 如果您需要 UI 中的最终数据,您可以使用
    ipcRenderer.send()
  2. 将数据传递到 UI

5
投票

这可能与您的任务没有直接关系,但对于那些项目间接受此问题影响的人来说(例如,如果您正在使用 Electron 构建一个 Web 浏览器界面,您希望允许用户在浏览器),最好的方法是将 Electron 的用户代理更改为 Firefox 的。

view.webContents.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0";

这将导致 Google 帐户认为您在 Firefox 而不是 Electron 上运行,因此它将阻止进一步的禁止检查发生。将用户代理设置为 Chromium 不适用于这种情况,因为 Google 帐户仍然可以检测到浏览器是基于 Electron 的。将用户代理设置为 Firefox 会以某种方式禁用此检查。

根据基于 Wexond Electron 的网络浏览器的开发人员的说法,这似乎有效。

请参阅 https://github.com/wexond/browser-base/issues/424 了解相关项目的相关问题修复(我不隶属于该项目)。

© www.soinside.com 2019 - 2024. All rights reserved.