Spaces:
Sleeping
Sleeping
| title: HF OAuth Demo | |
| emoji: 🔐 | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: docker | |
| app_port: 7860 | |
| hf_oauth: true | |
| hf_oauth_scopes: | |
| - inference-api | |
| # HF OAuth Demo | |
| 一个基于 Node.js + Express 的 Hugging Face OAuth 测试应用,部署为 Hugging Face Docker Space。支持 OAuth 登录流程测试、Token 换取、UserInfo 查询以及 Hugging Face API(models/datasets/spaces)代理调用。 | |
| ## 项目结构 | |
| ``` | |
| hf-oauth-demo/ | |
| ├── server.js # 后端服务主文件,OAuth 流程入口 | |
| ├── oauth_endpoints.js # OAuth 端点代理(token/userinfo/jwks/register) | |
| ├── api_endpoints.js # Hugging Face API 代理(whoami/models/datasets/spaces) | |
| ├── public/ | |
| │ ├── index.html # 登录引导页 | |
| │ ├── callback_success.html # 授权成功页 | |
| │ └── test_interface.html # API 测试工具 | |
| ├── Dockerfile # Docker Space 构建文件 | |
| ├── package.json # 项目依赖 | |
| ├── .env.example # 本地开发环境变量模板 | |
| └── README.md # 项目说明 | |
| ``` | |
| ## 本地开发 | |
| 1. 安装依赖: | |
| ```bash | |
| npm install | |
| ``` | |
| 2. 复制环境变量模板并填写: | |
| ```bash | |
| cp .env.example .env | |
| ``` | |
| 3. 启动服务: | |
| ```bash | |
| npm start | |
| ``` | |
| 4. 访问 http://127.0.0.1:7860 开始测试。 | |
| ## 部署到 Hugging Face Spaces | |
| ```bash | |
| # 创建 Docker Space(仅需执行一次) | |
| hf repos create iSolver-AI/hf-oauth-demo --type space --space-sdk docker | |
| # 添加远程仓库并推送 | |
| git remote add hf https://huggingface.co/spaces/iSolver-AI/hf-oauth-demo.git | |
| git push hf master:main | |
| ``` | |
| 推送后,Space 会自动构建并运行。由于 `README.md` 中已配置 `hf_oauth: true`,Hugging Face 会自动创建 OAuth app 并注入以下环境变量: | |
| - `OAUTH_CLIENT_ID` | |
| - `OAUTH_CLIENT_SECRET` | |
| - `OAUTH_SCOPES` | |
| - `SPACE_HOST` | |
| 访问地址:https://isolver-ai-hf-oauth-demo.hf.space | |
| ## 功能说明 | |
| ### OAuth 流程 | |
| - `GET /login`:直接重定向到 Hugging Face 授权页 | |
| - `GET /api/oauth/start`:返回授权 URL(测试模式,不自动重定向) | |
| - `GET /api/oauth/code/:state`:查询指定 state 关联的授权码 | |
| - `GET /callback`:接收授权码并保存到 state,重定向到测试页面 | |
| - `POST /api/oauth/token`:用 code 换取 access_token | |
| - `GET /api/oauth/userinfo`:获取当前用户信息 | |
| - `GET /api/oauth/jwks`:获取 JWKS | |
| - `POST /api/oauth/register`:动态客户端注册 | |
| ### Hugging Face API 代理 | |
| - `GET /api/whoami`:当前用户信息 | |
| - `GET /api/models/:owner`:指定用户的模型列表 | |
| - `GET /api/datasets/:owner`:指定用户的数据集列表 | |
| - `GET /api/spaces/:owner`:指定用户的 Spaces 列表 | |
| - `GET /api/models/:owner/:repo`:模型详情 | |
| - `GET /api/datasets/:owner/:repo`:数据集详情 | |
| - `GET /api/spaces/:owner/:repo`:Space 详情 | |
| ## 安全说明 | |
| - `client_id` / `client_secret` 仅保存在服务端环境变量中,不暴露给前端。 | |
| - 本地开发时使用 `.env` 文件,生产环境(Hugging Face Space)由平台自动注入。 | |
| - `.env` 已加入 `.gitignore`,避免误提交到仓库。 | |