使用 GitHub 进行第三方登录(OAuth2)的完整流程整理如下,以 Actix + Rust + JWT 的实现为示例。


1️⃣ 准备工作

  1. 注册 GitHub OAuth App

    image.png

  2. 后端环境变量


2️⃣ 登录入口

用户点击 “使用 GitHub 登录” 按钮:

  1. 后端生成 OAuth2 授权 URL:
  2. 返回这个 URL 给前端,前端跳转到 GitHub 授权页面。
// Actix 例子
let (auth_url, csrf_state, pkce_code_challenge) = client
    .authorize_url(CsrfToken::new_random)
    .add_scope(Scope::new("user:email".to_string()))
    .set_pkce_challenge(PkceCodeChallenge::from_code_verifier(&pkce_verifier))
    .url();

3️⃣ 用户授权


4️⃣ 后端换取 Github Access Token

  1. 后端收到 code 和 state。
  2. 验证 state 是否和之前生成的一致(防 CSRF)。
  3. 如果使用 PKCE,需要使用 code_verifier。