mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-10-14 05:00:08 +00:00
75 lines
2.2 KiB
Markdown
75 lines
2.2 KiB
Markdown
# OAuth2
|
||
|
||
OAuth 2.0 第三方登录插件,支持 GitHub、Google 等社交平台登录
|
||
|
||
- 支持 GitHub、Google 第三方登录
|
||
- 支持第三方账号绑定与解绑
|
||
- 支持登录回跳和绑定回跳配置
|
||
|
||
## 插件类型
|
||
|
||
- 应用级插件
|
||
|
||
## 配置说明
|
||
|
||
在 `backend/.env` 中添加以下内容:
|
||
|
||
```env
|
||
# [ Plugin ] oauth2
|
||
OAUTH2_GITHUB_CLIENT_ID='test'
|
||
OAUTH2_GITHUB_CLIENT_SECRET='test'
|
||
OAUTH2_GOOGLE_CLIENT_ID='test'
|
||
OAUTH2_GOOGLE_CLIENT_SECRET='test'
|
||
```
|
||
|
||
插件目录下 `plugin.toml` 的 `[settings]` 中包含以下内容:
|
||
|
||
```toml
|
||
[settings]
|
||
OAUTH2_FRONTEND_BINDING_REDIRECT_URI = 'http://localhost:5173/profile'
|
||
OAUTH2_FRONTEND_LOGIN_REDIRECT_URI = 'http://localhost:5173/oauth2/callback'
|
||
OAUTH2_GITHUB_REDIRECT_URI = 'http://127.0.0.1:8000/api/v1/oauth2/github/callback'
|
||
OAUTH2_GOOGLE_REDIRECT_URI = 'http://127.0.0.1:8000/api/v1/oauth2/google/callback'
|
||
OAUTH2_STATE_EXPIRE_SECONDS = 180
|
||
OAUTH2_STATE_REDIS_PREFIX = 'fba:oauth2:state'
|
||
```
|
||
|
||
在 `backend/core/conf.py` 中添加以下内容:
|
||
|
||
```python
|
||
##################################################
|
||
# [ Plugin ] oauth2
|
||
##################################################
|
||
# .env
|
||
OAUTH2_GITHUB_CLIENT_ID: str
|
||
OAUTH2_GITHUB_CLIENT_SECRET: str
|
||
OAUTH2_GOOGLE_CLIENT_ID: str
|
||
OAUTH2_GOOGLE_CLIENT_SECRET: str
|
||
|
||
# 基础配置(in plugin.toml)
|
||
OAUTH2_STATE_REDIS_PREFIX: str
|
||
OAUTH2_STATE_EXPIRE_SECONDS: int
|
||
OAUTH2_GITHUB_REDIRECT_URI: str
|
||
OAUTH2_GOOGLE_REDIRECT_URI: str
|
||
OAUTH2_FRONTEND_LOGIN_REDIRECT_URI: str
|
||
OAUTH2_FRONTEND_BINDING_REDIRECT_URI: str
|
||
```
|
||
|
||
## 使用方式
|
||
|
||
1. 安装并启用插件后,在 GitHub、Google 开放平台分别创建 OAuth 应用
|
||
2. 将平台分配的 Client ID、Client Secret 配置到项目环境变量中
|
||
3. 确保平台回调地址与 `OAUTH2_GITHUB_REDIRECT_URI`、`OAUTH2_GOOGLE_REDIRECT_URI` 保持一致
|
||
4. 配置前端登录回跳地址与绑定回跳地址
|
||
5. 重启后端服务后,使用第三方登录、绑定和解绑能力
|
||
|
||
## 卸载说明
|
||
|
||
- 卸载插件后,建议同步移除相关环境变量、插件基础配置和 `backend/core/conf.py` 中的插件配置
|
||
- 如前端登录页或个人中心已集成第三方登录、绑定等能力,请同步清理对应集成
|
||
|
||
## 联系方式
|
||
|
||
- 作者:`wu-clan`
|
||
- 反馈方式:提交 Issue 或 PR
|