簡體   English   中英

如何在我的應用程序中使用 Discord OAuth2 進行用戶管理和身份驗證?

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

我正在構建一個應用程序,我希望能夠使用 Discord 和 OAuth2 創建和驗證用戶。 原因是:

  • 該應用程序可以被視為我正在運行的 Discord 社區的“伴侶”應用程序,並且
  • 我不希望用戶或我自己必須處理用戶名和密碼

該應用程序由客戶端桌面應用程序和后端服務組成。 我對如何使用 Discord 授權用戶有相當基本的了解:

  1. 客戶端應用程序轉到后端端點/oauth/login並且用戶被重定向到 Discord 應用程序批准頁面
  2. 用戶確認並被重定向到后端回調/oauth/callback ,其代碼可用於獲取一對訪問和刷新令牌。

坦率地說,從這一點來看,我對身份驗證的 rest 應該如何工作感到困惑。 我至少假設以下幾點:

  • 我需要在我的數據庫中創建一個用戶條目,其中至少有一個 UID(為簡單起見,與 Discord 中的用戶相同)、訪問和刷新令牌對。 如果已創建用戶,請使用新令牌更新數據庫。
  • 每當應用程序需要來自 Discord 的用戶信息時,它應該使用訪問令牌。 如果已過期,則將刷新令牌與 Discord 交換以獲得新的令牌對。

但現在呢? 這僅針對 Discord 對用戶進行身份驗證。 我想利用用戶通過 Discord 進行身份驗證這一事實對我的應用程序進行身份驗證。 以下是我的一些一般性問題:

  • 我是否為用戶創建一個新令牌以用於對我的后端端點的后續請求? 還是將 Discord 訪問令牌返回給桌面客戶端?
  • 令牌過期了怎么辦? 我是否還需要桌面客戶端的“交換”端點來刷新令牌(可能只是轉發到 Discord 以獲取新令牌,具體取決於我之前問題的答案)。

這一切都感覺應該是非常基本的,但我在這里超出了我的舒適區,需要一些幫助才能暢通無阻。

謝謝閱讀!

您自己的應用程序應該有效地擁有自己的 session 系統。

最簡單的可能只是使用基於 HttpOnly cookie 的會話,類似於 Redis 存儲(如果這是一個玩具項目,則為 Memory 存儲)。

服務器上的 session 數據應包含有關當前登錄的用戶的信息。您可能應該將 discord 訪問和刷新令牌存儲在數據庫中。

處理刷新的最簡單方法是在收到401響應后立即調用其刷新令牌端點。 如果 discord 提供有關訪問令牌有效時間的信息,您也可以搶先刷新而不是僅在獲得401時才這樣做。 您的服務器進行刷新,您不需要端點。

一般來說,我建議您的服務器處理與 discord API 的所有交互,而不是您的客戶端。 (除了初始授權步驟)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM