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

http://localhost:3000http://localhost:8000/auth/github/callbackClient IDClient Secret后端环境变量
GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETFRONTEND_URL (前端页面 URL,用于登录成功后跳转)DATABASE_URL (可选,如果存用户信息)用户点击 “使用 GitHub 登录” 按钮:
client_idredirect_uri(回调地址)scope(请求权限,如 user:email)state(防 CSRF,可随机字符串)code_challenge(如果使用 PKCE)// 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();
用户在 GitHub 页面点击 Authorize。
GitHub 验证通过后,重定向到你的 callback URL:
GET /auth/github/callback?code=xxxx&state=xxxx
code 和 state。state 是否和之前生成的一致(防 CSRF)。code_verifier。