使用 Electron 在单独的窗口/浏览器中进行 OAuth 登录

tob*_*ier 1 authentication oauth callback electron

我正在开发一个连接到 AWS 后端的 Electron 应用程序,该应用程序处理用户的验证和创建。如果重要的话我会用 React 构建应用程序。

基本上后端流程是:

  • 导航至backend.com/oauth/login
  • 后端准备 OAuth 配置,重定向到 Discord.com 身份验证 url
  • 用户进行身份验证,backend.com/oauth/callback使用必要的信息重定向到以验证身份验证并创建用户

我已经让这部分工作了。但如果我在单独的浏览器窗口中打开backend.com/oauth/login,我如何知道身份验证是否成功?

我可以在打开的身份验证窗口中监听一些事件吗?也许让回调重定向到backend.com/login/successful身份验证是否完成或其他情况backend.com/login/failed。这感觉就像是一个黑客,但我在这里远远超出了我的专业知识。

Cri*_*_SO 5

三种方法可以做到这一点:

  • 身份验证成功后,您将用户的浏览器重定向到后端,在后端加载用户状态的身份验证数据。您的 React/Electron 应用程序也连接到该后端。您必须能够匹配这两个连接
  • 身份验证成功后,您将用户的浏览器重定向到在操作系统中注册的自定义 URL 协议以打开您的 Electron 应用程序
  • 身份验证成功后,您将用户的浏览器重定向到正在运行的 Electron 应用程序上的端口

大多数优秀的 Electron 应用程序都使用数字 2 - 但它要求您的应用程序知道如何在它可能运行的每个操作系统上注册 URL 处理程序。如果您可以安全地匹配两个连接,则数字 1 很好。它需要通过某种形式的身份证明。第三个是黑客。