Electron应用程序中使用的授权调用应该使用什么重定向URI



我有一个基本的Electron应用程序,基于示例入门项目,没有做任何特别的事情。

对于我的主窗口,我正在加载一个URL作为一个GET请求到一个API结束

loginWindow.loadURL('https://apiwebsite.com/api/v1.0/authorize?secret_id=my_secret&redirect_uri=<???????>')

作为对这个API端点的GET请求的一部分,我必须发送一个返回URI。这实际上很好,因为我可以让API返回并加载我指定的URI。然而,我不知道该指定什么URI才能将其返回到我的应用程序中的某个位置,在那里我可以读取响应并继续操作。

我已经习惯了web开发,但Electron对我来说是个新手。我不知道在这种情况下如何提交返回URI。会是什么?与打包应用程序相比,本地开发会改变吗?

有更好的方法吗?

桌面应用程序的OAUTH

针对桌面应用程序的OAuth推荐以下两个关键行为:

  • 通过系统浏览器登录,这样您的应用程序就不会看到用户凭据
  • 使用授权代码流(PKCE(,因为您的应用程序是公共客户端

这通常会导致以下解决方案之一:

  • 基于环回的重定向URI,例如http://127.0.0.1:8000/callback
  • 基于私有URI方案的重定向URI,如x-mycompany-desktopapp:/callback

正如您所发现的,除非您使用旧的(不推荐使用的(web视图解决方案,否则标准的基于HTTP的互联网重定向URL将不适用于桌面应用程序。

矿山资源

这是一个很难实现的流程,尽管我的博客有几个Electron代码示例,你可以很容易地从本地PC上运行,看看这两种解决方案是什么样子的:

  • 使用环回解决方案的初始桌面代码示例
  • 使用私有URI方案解决方案的最终桌面代码示例

我的样本很深,但希望其中一些对您自己的解决方案有用。。。

最新更新