vault backup: 2026-05-05 22:38:17

This commit is contained in:
2026-05-05 22:38:17 +08:00
parent 975f4b8250
commit 235d6bcc63
2 changed files with 95 additions and 1 deletions

View File

@@ -0,0 +1,92 @@
## 1. 概览
本项目通过模拟 **Unreal Engine Launcher** 客户端,使用 Epic Games 的 OAuth2 接口进行身份认证,从而获得调用 Epic/Fab 资产分发 API 的权限。
## 2. 登录步骤(完整流程)
### Step 1: 打开 Epic 登录页
在浏览器中打开以下 URL
```
https://www.epicgames.com/id/login?redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fid%2Fapi%2Fredirect%3FclientId%3D34a02cf8f4414e29b15921876da36f9a%26responseType%3Dcode
```
### Step 2: 登录并获取 Code
1. 使用 Epic Games 账号登录
2. 登录成功后,页面重定向到一个包含 `?code=xxx` 的页面
3. 复制该 `authorization_code`
### Step 3: 提交 Code
将获取到的 `authorization_code` 提交到系统,系统会自动完成后续 Token 换取。
### Step 4: 系统自动维护
- `access_token` — 有效期约 6-8 小时,用于调用 Epic API
- `refresh_token` — 长期有效,用于自动换取新 token
- 系统每 12 小时自动刷新,无需用户再次操作
- 用户只需完成一次登录,后续全部自动
## 3. 调用的 Epic Games API 列表
以下是系统使用你的账号 Token 所调用的全部 Epic 外部 API
| # | 用途 | 方法 | URL | 是否使用你的 Token | 说明 |
|---|------|------|-----|:------------------:|------|
| 1 | 换取/刷新 Token | POST | `https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token` | 否(用客户端凭证) | 用 authorization_code 换取 token以及定期用 refresh_token 续期 |
| 2 | 获取资产列表 | GET | `https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/public/assets/{platform}` | 是 | 读取你账号拥有的所有 UE/Fab 资产列表appName、版本号等 |
| 3 | 获取下载清单 | GET | `https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/public/assets/v2/platform/{platform}/namespace/{namespace}/catalogItem/{catalogItemId}/app/{appName}/label/{label}` | 是 | 获取某个资产的 CDN 下载地址,等同于 Launcher 点击"下载"的内部请求 |
| 4 | 获取用户库 | GET | `https://library-service.live.use1a.on.epicgames.com/library/api/public/items` | 是 | 列出你的 Fab Library 中所有已拥有的资产 |
| 5 | 获取权益列表 | GET | `https://entitlement-public-service-prod08.ol.epicgames.com/entitlement/api/account/{accountId}/entitlements` | 是 | 验证账号是否拥有特定资产的使用权 |
| 6 | CDN 文件下载 | GET | `https://cdn1.unrealengine.com/.../.manifest?...签名参数` | 否URL 自带签名) | 实际下载资产文件块,不使用你的 Token |
## 4. 权限说明
### Token 拥有的权限(只读)
| 能力 | 说明 |
|------|------|
| 读取资产列表 | 查看你购买/领取的所有 UE/Fab 资产 |
| 下载资产 | 获取下载地址 + 从 CDN 下载文件 |
| 读取权益 | 查询你是否拥有某个资产的使用权 |
| 读取用户库 | 列出 Library 中的项目 |
| 基本信息 | 获取 displayName、accountId |
### Token 不具备的权限
- ❌ 购买资产、消费余额、使用钱包
- ❌ 修改账号密码或邮箱
- ❌ 访问支付信息/信用卡/账单
- ❌ 修改任何账号设置
- ❌ 发布/上架/下架/删除资产
- ❌ 访问好友/社交/聊天功能
- ❌ 发送任何消息
- ❌ 退款/取消订单
- ❌ 代替用户登录 Epic 网站token ≠ session cookie
- ❌ 访问 Fab.com 网页端功能(那是独立系统)
## 5. 账号安全性分析
### 5.1 提供 Fab/Epic 账号的风险评估
| 风险项 | 级别 | 说明 |
|--------|------|------|
| 账号被盗 | **低** | 系统只存储 refresh_token不存储密码。即使 token 泄露,攻击者无法修改密码或邮箱 |
| 购买/消费 | **无** | Launcher 客户端凭证不具备购买权限,无法产生消费 |
| 账号信息泄露 | **低** | 仅可获取 displayName 和 accountId无法读取邮箱、支付信息、密码等 |
| 社交/隐私 | **无** | 无法访问好友列表、聊天记录、个人设置等 |
| 撤销能力 | **随时可撤销** | 用户在 Epic 网站修改密码即可使所有 refresh_token 立即失效 |
### 5.2 Token 能做什么 vs 不能做什么
#### 能做的Launcher 级别只读权限)
- ✅ 列出已购/已领取的资产
- ✅ 下载已拥有的资产文件
- ✅ 查询权益entitlements
- ✅ 获取 displayName、accountId
#### 不能做的
- ❌ 购买资产、消费余额
- ❌ 修改账号密码或邮箱
- ❌ 访问支付信息/信用卡
- ❌ 修改账号设置
- ❌ 发布/上架/下架资产
- ❌ 访问好友/社交功能
- ❌ 发送消息
- ❌ 退款/取消订单
- ❌ 代替用户登录 Epic 网站token ≠ session cookie

View File

@@ -253,3 +253,5 @@ https://skills.netease.com/skills/skill_65b044f0dd0c
- refresh_token 存储在 MongoDB 中,不暴露在 API 响应中 - refresh_token 存储在 MongoDB 中,不暴露在 API 响应中
- authorization_code 只在内存中短暂存在,用完即丢 - authorization_code 只在内存中短暂存在,用完即丢
- 所有认证相关路由在 Admin 认证保护下 - 所有认证相关路由在 Admin 认证保护下
---