如何在我的应用程序中使用 Discord OAuth2 进行用户管理和身份验证?

How do I use Discord OAuth2 for user management and authentication in my application?

我正在构建一个应用程序,我希望能够在其中使用 Discord 和 OAuth2 创建和验证用户。原因是:

该应用程序由客户端桌面应用程序和后端服务组成。我对如何使用 Discord 授权用户有一个相当基本的了解:

  1. 客户端应用程序转到后端端点 /oauth/login 并且用户被重定向到 Discord 应用批准页面
  2. 用户确认并重定向到后端回调 /oauth/callback,其中包含可用于获取一对访问和刷新令牌的代码。

坦率地说,从这一点来看,我对其余的身份验证应该如何工作有点困惑。我假设至少如下:

但是现在呢?这只会根据 Discord 对用户进行身份验证。我想利用用户通过 Discord 进行身份验证这一事实来对我的应用程序进行身份验证。以下是我的一些一般性问题:

这一切感觉应该是非常基本的,但我不在我的舒适区,需要一些帮助才能畅通无阻。

感谢阅读!

您自己的应用程序应该有效地拥有自己的会话系统。

最简单的可能就是使用 HttpOnly cookie-based 会话,它类似于 Redis 存储(如果这是一个玩具项目,则为 Memory 存储)。

服务器上的会话数据应包含有关当前登录用户的信息。您应该将不和谐访问和刷新令牌存储在数据库中。

处理刷新的最简单方法是在收到 401 响应后立即调用其刷新令牌端点。如果 discord 提供了有关访问令牌有效期的信息,您也可以抢先刷新,而不是仅在获得 401 时才执行此操作。您的服务器进行刷新,您不需要端点。

一般来说,我建议您的服务器处理所有与 discord API 的交互,而不是您的客户端。 (除了初始授权步骤)。