Python 桌面应用程序 - 在 OAuth2 PKCE 流程中关闭浏览器

Python desktop application - close browser in OAuth2 PKCE flow

我已经使用 Python 通过 Okta 实现了 OAuth2 PKCE 流程。它是一个桌面应用程序。我使用自定义 URL 方案作为重定向 URL 来接收授权码。一切正常,浏览器在重定向 URL 中看到自定义 URL 方案时打开应用程序,但浏览器保持打开状态并显示正在进行的 Okta 登录图像。如何关闭浏览器或在浏览器中显示适当的消息?

这是一个棘手的流程,很难做到完美,但登录后返回网页而不是直接进入应用程序会给您更好的控制权:

默认选项

使用自动调用的重定向 URI,例如 x-mycompany-desktopapp:/callback,但这会导致浏览器页面残留/令人困惑,正如您所发现的。

插页选项

将重定向 URI 更新为这样的值,这是您需要托管的网页:

如果您在上面的页面上执行 'View Source',您将看到它在单击“继续”按钮时调用自定义 URI 方案。这至少让您可以控制 post 登录行为和消息传递。

更多信息

我的 blog post 有更多详细信息和一个 NodeJS 桌面代码示例,您可以 运行。