javascript - 我应该为 Electron 应用程序中使用的授权调用使用什么重定向 URI?

标签 javascript oauth-2.0 electron

我有一个基本的 Electron 应用程序,没有什么特别的,基于示例启动项目。
对于我的主窗口,我正在加载一个 URL 作为对 API 端点的 GET 请求

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 for desktop apps推荐这两个关键行为:

  • 通过系统浏览器登录,以便您的应用永远不会看到用户凭据
  • 使用授权码流 (PKCE),因为您的应用是公共(public)客户端

  • 这通常会导致以下解决方案之一:
  • 基于环回的重定向 URI,例如 http://127.0.0.1:8000/callback
  • 基于私有(private) URI 方案的重定向 URI,例如 x-mycompany-desktopapp:/回调

  • 正如您所发现的,除非您使用较旧(已弃用)的 Web View 解决方案,否则基于标准 HTTP 的 Internet 重定向 URL 将不适用于桌面应用程序。
    我的资源
    虽然我的博客有几个 Electron 代码示例,但您可以轻松地从本地 PC 运行这些示例,以查看这两种解决方案的外观,但实现流程很棘手:
  • Initial Desktop Code Sample, using the Loopback Solution
  • Final Desktop Code Sample, using the Private URI Scheme Solution

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

    关于javascript - 我应该为 Electron 应用程序中使用的授权调用使用什么重定向 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64530295/

    相关文章:

    javascript - 信用卡校验和使我的网页崩溃

    javascript - Node.js 文件夹结构 : unit tests and e2e tests

    reactjs - 在使用 React 和 Electron 登录后,构建登录并继续到主页的最佳方式是什么

    authentication - 为 Web 应用程序使用自己的 API - 使用 OAuth2 的身份验证过程

    javascript - 如何在 Electron 中保存大文件?

    javascript - 如何为 Electron 中的启动画面添加延迟

    javascript - Meteor 教程的第 2 步让我很困惑

    javascript - 如何在页面之间共享 JS 变量?

    security - OAuth2 中客户端 key 的用途是什么?

    curl - 如何获得 Reddit API 访问 token ?