4.6 KiB
4.6 KiB
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
- 使用 Epic Games 账号登录
- 登录成功后,页面重定向到一个包含
?code=xxx的页面 - 复制该
authorization_code
Step 3: 提交 Code
将获取到的 authorization_code 提交到系统,系统会自动完成后续 Token 换取。
Step 4: 系统自动维护
access_token— 有效期约 6-8 小时,用于调用 Epic APIrefresh_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)