From a5876bcd108c5941b60e0427fa34d358cfed5266 Mon Sep 17 00:00:00 2001 From: Kamisato-Ayaka-233 <2627706725@qq.com> Date: Sat, 17 Jun 2023 13:36:05 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E3=80=90F=E3=80=91=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95=E8=8E=B7=E5=8F=96Game=20To?= =?UTF-8?q?ken=E7=9A=84=E6=96=B9=E6=B3=95=E4=B8=8E=E6=8E=A5=E5=8F=A3=20-?= =?UTF-8?q?=20=E3=80=90F=E3=80=91=E8=A1=A5=E5=85=A8=E8=B4=A6=E5=8F=B7Cooki?= =?UTF-8?q?e=E7=9A=84=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=20-=20=E3=80=90F?= =?UTF-8?q?=E3=80=91=E5=A2=9E=E5=8A=A0Cookie=E5=AD=97=E6=AE=B5=20-=20?= =?UTF-8?q?=E3=80=90I=E3=80=91=E4=BF=AE=E6=94=B9=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=A4=B4=E6=8F=8F=E8=BF=B0=20-=20=E3=80=90I=E3=80=91=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E9=83=A8=E5=88=86=E6=96=87=E6=A1=A3=E4=B8=AD=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + hoyolab/forum/info.md | 7 +- hoyolab/login/qrcode.md | 166 +++++++++++ hoyolab/user/game_account_info.md | 4 +- hoyolab/user/info.md | 135 +-------- hoyolab/user/token.md | 441 ++++++++++++++++++++++++++++++ other/authentication.md | 57 +++- other/error_code.md | 13 +- 8 files changed, 680 insertions(+), 145 deletions(-) create mode 100644 hoyolab/login/qrcode.md create mode 100644 hoyolab/user/token.md diff --git a/README.md b/README.md index 8802f83..b52b44d 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ - [ ] [登录](hoyolab/login) - [ ] [密码登录](hoyolab/login/password.md) - [ ] [验证码登录](hoyolab/login/sms.md) + - [ ] [扫码登录](hoyolab/login/qrcode.md) - [ ] [论坛](hoyolab/forum) - [ ] [基本信息](hoyolab/forum/info.md) - [ ] [文章](hoyolab/article) @@ -87,6 +88,7 @@ - [ ] [公告](hoyolab/article/announcement.md) - [ ] [用户](hoyolab/user) - [ ] [用户信息](hoyolab/user/info.md) + - [ ] [用户Token](hoyolab/user/token.md) - [ ] [用户游戏信息](hoyolab/user/game_account_info.md) --- diff --git a/hoyolab/forum/info.md b/hoyolab/forum/info.md index 114fb7d..8d2fe57 100644 --- a/hoyolab/forum/info.md +++ b/hoyolab/forum/info.md @@ -1,10 +1,13 @@ # 论坛基本信息 -- [获取论坛分区信息](#获取论坛分区信息) +- [论坛](#论坛) + - [获取论坛分区信息](#获取论坛分区信息) --- -## 获取论坛分区信息 +## 论坛 + +### 获取论坛分区信息 _请求方式:GET_ diff --git a/hoyolab/login/qrcode.md b/hoyolab/login/qrcode.md new file mode 100644 index 0000000..8bed0f7 --- /dev/null +++ b/hoyolab/login/qrcode.md @@ -0,0 +1,166 @@ +# 米游社扫码登录 + +- [扫码登录](#扫码登录) + - [操作步骤](#qrcode-step) + - [生成二维码](#生成二维码) + - [查询二维码扫描状态](#查询二维码扫描状态) + +--- + +## 扫码登录 + +

操作步骤

+ +1. [生成二维码](#生成二维码),记录返回`data`对象的`url`,及其URL参数中的`ticket`字段(下称`ticket`)。 +1. 生成二维码供用户扫描。 +1. 不断[查询二维码扫描状态](#查询二维码扫描状态)。在用户扫描并确认登录后,获取`data`对象→`payload`对象的`raw`(即Game Token)。 + +### 生成二维码 + +**国服:** + +_请求方式:POST_ + +`https://hk4e-sdk.mihoyo.com/hk4e_cn/combo/panda/qrcode/fetch` + +**JSON请求:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| app_id | str | 登录的应用标识符
1 《崩坏3》
2 《未定事件簿》
4 《原神》
5 平台应用
7 《崩坏学园2》
8 《崩坏:星穹铁道》
9 云游戏
10 3NNN
11 PJSH
12 《绝区零》
13 HYG | 没有用处,但是必须传递此参数 | +| device | str | 设备ID | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码 | | +| message | str | 返回消息 | | +| data | obj | 二维码指向的URL | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| url | str | 二维码指向的URL | | + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "url": "https://user.mihoyo.com/qr_code_in_game.html?app_id=7\u0026app_name=%E5%B4%A9%E5%9D%8F%E5%AD%A6%E5%9B%AD2&bbs=false\u0026biz_key=bh2_cn\u0026expire=1687002702\u0026ticket=648706ceff80ee663845a13d" + } +} +``` + +
+ + + +### 查询二维码扫描状态 + +**国服:** + +_请求方式:POST_ + +`https://hk4e-sdk.mihoyo.com/hk4e_cn/combo/panda/qrcode/query` + +**JSON请求:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| app_id | str | 登录的应用标识符,与生成二维码时传递的值必须相同 | | +| device | str | 设备ID | 与生成二维码时传递的值相同 | +| ticket | str | 生成二维码时从返回的URL的参数中,`ticket`字段的值 | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码
-106 二维码已过期 | | +| message | str | 返回消息 | | +| data | obj | 二维码状态 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| stat | str | 二维码状态
Init 未扫描
Scanned 已扫描
Confirmed 已确认 | | +| payload | obj | 登录数据 | | + +`data`对象→`payload`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| proto | str | 当前的数据类型
Raw 无数据
Account 已确认 | | +| raw | str | 确认登录之前为空字符串,之后则为米游社UID和Game Token,其中的`token`字段即为账号的Game Token | | +| ext | str | | | + +
+查看示例 + +```json +// 未扫描 +{ + "retcode": 0, + "message": "OK", + "data": { + "stat": "Init", + "payload": { + "proto": "Raw", + "raw": "", + "ext": "" + } + } +} + +// 已扫描 +{ + "retcode": 0, + "message": "OK", + "data": { + "stat": "Scanned", + "payload": { + "proto": "Raw", + "raw": "", + "ext": "" + } + } +} + +// 已过期 +{ + "data": null, + "message": "ExpiredCode", + "retcode": -106 +} + +// 已确认 +{ + "retcode": 0, + "message": "OK", + "data": { + "stat": "Confirmed", + "payload": { + "proto": "Account", + "raw": "{\"uid\":\"317832114\",\"token\":\"***\"}", + "ext": "" + } + } +} +``` +
+ + \ No newline at end of file diff --git a/hoyolab/user/game_account_info.md b/hoyolab/user/game_account_info.md index e7bf535..0045fea 100644 --- a/hoyolab/user/game_account_info.md +++ b/hoyolab/user/game_account_info.md @@ -1833,7 +1833,7 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | | authkey_ver | num | 1 | | -| authkey | str | 验证密钥,用于标识游戏账号 | 获取方法:
1. 游戏内打开一次跃迁记录页面,然后在“游戏安装目录/StarRail_Data/webCaches/Cache/Cache_Data/data_2”,寻找类似“”的链接,该参数的值在其中
2. [通过Cookie获取用户`authkey`](hoyolab/user/info.md#通过cookie获取用户authkey) | +| authkey | str | 验证密钥,用于标识游戏账号 | 获取方法:
1. 游戏内打开一次跃迁记录页面,然后在“游戏安装目录/StarRail_Data/webCaches/Cache/Cache_Data/data_2”,寻找类似“”的链接,该参数的值在其中
2. [通过Cookie获取用户`authkey`B](hoyolab/user/info.md#通过cookie获取用户authkeyb) | | lang | str | 语言,即返回数据中抽到的项目名称
zh-cn zh 简体中文
zh-tw 繁体中文
en-us en 英语
ru-ru ru 俄语
ja-jp ja 日语
以及其它国际语言代码 | | | size | num | 返回数据中的最大数据数量。最小为0,最大为20。若小于0,则返回0个数据;若大于20,则返回最大20个数据 | | | end_id | num | 见下文的说明 | | @@ -2042,7 +2042,7 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | | authkey_ver | num | 1 | | -| authkey | str | 验证密钥,用于标识游戏账号 | 获取方法:
1. 游戏内打开一次跃迁记录页面,然后在“游戏安装目录/StarRail_Data/webCaches/Cache/Cache_Data/data_2”,寻找类似“”的链接,该参数的值在其中
2. [通过Cookie获取用户`authkey`](hoyolab/user/info.md#通过cookie获取用户authkey) | +| authkey | str | 验证密钥,用于标识游戏账号 | 获取方法:
1. 游戏内打开一次跃迁记录页面,然后在“游戏安装目录/StarRail_Data/webCaches/Cache/Cache_Data/data_2”,寻找类似“”的链接,该参数的值在其中
2. [通过Cookie获取用户`authkey`B](hoyolab/user/info.md#通过cookie获取用户authkeyb) | | lang | str | 语言,即返回数据中抽到的项目名称
zh-cn zh 简体中文
zh-tw 繁体中文
en-us en 英语
ru-ru ru 俄语
ja-jp ja 日语
以及其它国际语言代码 | | | size | num | 返回数据中的最大数据数量。最小为0,最大为20。若小于0,则返回0个数据;若大于20,则返回最大20个数据 | | | end_id | num | 见下文的说明 | | diff --git a/hoyolab/user/info.md b/hoyolab/user/info.md index 68d8d60..c664429 100644 --- a/hoyolab/user/info.md +++ b/hoyolab/user/info.md @@ -3,12 +3,12 @@ - [用户信息](#用户信息) - [获取用户完整信息](#获取用户完整信息) - [获取用户发布的文章](#获取用户发布的文章) - - [通过Cookie获取用户`authkey`A](#通过cookie获取账号authkeya) - - [通过Cookie获取用户`authkey`B](#通过cookie获取账号authkeyb) --- -## 获取用户完整信息 +## 用户信息 + +### 获取用户完整信息 **国服:** @@ -317,7 +317,7 @@ _请求方式:GET_ -## 获取用户发布的文章 +### 获取用户发布的文章 **国服:** @@ -340,130 +340,3 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | -## 通过Cookie获取账号`authkey`A - - - -**国服:** - -_请求方式:POST_ - -> _需要验证Cookie_ -> -> SToken - -`https://api-takumi.miyoushe.com/account/auth/api/genAuthKey` - -**JSON请求:** - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| game_biz | str | 米游社区域
bbs_cn 国服 | | - -**JSON返回:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| retcode | num | 返回码
1002 请求体的`game_biz`字段不正确 | | -| message | str | 返回消息 | | -| data | obj | `authkey`信息 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| sign_type | num | 2 | | -| authkey_ver | num | 1 | | -| authkey | str | `authkey`A | | - -
-查看示例 - -```json -{ - "retcode": 0, - "message": "OK", - "data": { - "sign_type": 2, - "authkey_ver": 1, - "authkey": "..." - } -} -``` - -
- -**国际服:** - -`未知` - -## 通过Cookie获取账号`authkey`B - -在请求例如获取用户的游戏抽卡记录等API时需要使用到`authkey`B。 - -**国服:** - -_请求方式:POST_ - -> _需要验证请求头_ -> -> `x-rpc-client_type`:`2` -> -> LK`salt` -> -> `DS1` - -> _需要验证Cookie_ -> -> SToken - -`https://api-takumi.miyoushe.com/binding/api/genAuthKey` - - -**JSON请求:** - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| game_biz | str | 获取的`authkey`B的游戏
hk4e_cn 《原神》
hkrpg_cn 《崩坏:星穹铁道》
| | -| game_uid | num | 游戏 - -**JSON返回:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| retcode | num | 返回码
1002 请求体的`game_biz`字段不正确 | | -| message | str | 返回消息 | | -| data | obj | `authkey`信息 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| sign_type | num | 2 | | -| authkey_ver | num | 1 | | -| authkey | str | `authkey`B | | - -
-查看示例 - -```json -{ - "retcode": 0, - "message": "OK", - "data": { - "sign_type": 2, - "authkey_ver": 1, - "authkey": "..." - } -} -``` - -
- -**国际服:** - -`未知` \ No newline at end of file diff --git a/hoyolab/user/token.md b/hoyolab/user/token.md new file mode 100644 index 0000000..69f84e4 --- /dev/null +++ b/hoyolab/user/token.md @@ -0,0 +1,441 @@ +# 用户Token + +- [Token](#token) + - [通过Login Ticket获取SToken和LToken](#通过login-ticket获取stoken和ltoken) + - [通过SToken获取Cookie Token](#通过stoken获取cookie-token) + - [通过Game Token获取SToken](#通过game-token获取stoken) + - [通过Game Token获取Cookie Token](#通过game-token获取cookie-token) + - [通过Cookie Token获取Hk4e Token](#通过cookie-token获取hk4e-token) +- [Auth Key](#auth-key) + - [通过SToken获取用户Auth Key A](#通过stoken获取账号auth-key-a) + - [通过SToken获取用户Auth Key B](#通过stoken获取账号auth-key-b) + +--- + +## Token + +### 通过Login Ticket获取SToken和LToken + +**国服:** + +_请求方式:GET_ + +`https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket` + +**参数:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| token_types | num | 获取的Token的类型
1 仅SToken
2 仅LToken
3 SToken和LToken
4 无 | | +| login_ticket | str | 有效的Login Ticket | | +| uid | num | 对应的米游社账号UID | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码 | | +| message | str | 返回消息 | | +| data | obj | Token | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| list | arr | SToken或LToken | | + +`data`对象→`list`数组→对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| name | str | Token类型
ltoken LToken
stoken SToken | | +| token | str | Token值 | | + + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "list": [ + { + "name": "stoken", + "token": "***" + }, + { + "name": "ltoken", + "token": "***" + } + ] + } +} +``` +
+ +### 通过SToken获取Cookie Token + +**国服:** + +_请求方式:GET_ + +> _需要验证Cookie_ +> +> SToken + +`https://api-takumi.mihoyo.com/auth/api/getCookieAccountInfoBySToken` + +**参数:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| stoken | str | 有效的SToken | | +| uid | num | 对应的米游社账号UID | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码 | | +| message | str | 返回消息 | | +| data | obj | Cookie Token和米游社UID | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| uid | str | 米游社UID | | +| cookie_token | str | SToken对应账号的Cookie Token | | + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "uid": "***", + "cookie_token": "***" + } +} +``` +
+ +### 通过Game Token获取SToken + +**国服:** + +_请求方式:POST_ + +> _需要验证请求头_ +> +> `x-rpc-app_id` + +`https://api-takumi.mihoyo.com/account/ma-cn-session/app/getTokenByGameToken` + +**JSON请求:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| account_id | num | 对应的米游社账号UID | | +| game_token | str | 有效的Game Token | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码
-3005 未传递`x-rpc-app_id`请求头 | | +| message | str | 返回消息 | | +| data | obj | 账号的Token与隐私信息 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| token | obj | 米游社账号的SToken | | +| user_info | obj | 米游社账号敏感信息 | 一些个人信息已被隐藏 | +| realname_info | | 待调查 | | +| need_realperson | bool | 待调查 | | + +`data`对象→`token`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| token_type | num | 1 | | +| token | str | 账号的SToken | | + +`data`对象→`user_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| aid | str | 米游社UID | | +| mid | str | 米游社MiHoYo ID | | +| account_name | str | 空字符串 | | +| email | str | 被隐藏的账号的绑定邮箱 | | +| is_email_verify | num | 绑定邮箱是否通过验证 | | +| area_code | str | 账号绑定手机的区号 | | +| mobile | str | 被隐藏的账号的绑定手机 | | +| safe_area_code | str | 账号安全手机的区号 | 历史遗留字段,现在安全手机的功能已经被移除了 | +| safe_mobile | str | 被隐藏的账号安全手机 | 历史遗留字段,现在安全手机的功能已经被移除了 | +| realname | str | 被隐藏的账号实名认证姓名 | | +| identity_code | str | 被隐藏的账号实名认证身份证号 | | +| rebind_area_code | str | 账号的换绑手机号的区号 | | +| rebind_mobile | str | 被隐藏的账号的换绑手机号 | | +| rebind_mobile_time | str | 0 | | +| links | arr | 待调查 | | + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "token": { + "token_type": 1, + "token": "***" + }, + "user_info": { + "aid": "*******", + "mid": "*******", + "account_name": "", + "email": "*********", + "is_email_verify": 1, + "area_code": "+86", + "mobile": "***********", + "safe_area_code": "", + "safe_mobile": "", + "realname": "***", + "identity_code": "******************", + "rebind_area_code": "", + "rebind_mobile": "", + "rebind_mobile_time": "0", + "links": [] + }, + "realname_info": null, + "need_realperson": false + } +} +``` +
+ +### 通过Game Token获取Cookie Token + +**国服:** + +_请求方式:GET_ + +`https://api-takumi.mihoyo.com/auth/api/getCookieAccountInfoByGameToken` + +**参数:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| account_id | num | 对应的米游社账号UID | | +| game_token | str | 有效的Game Token | | + +**JSON返回:** + +根对象: + +与[通过SToken获取Cookie Token](#通过stoken获取cookie-token)→根对象的结构相同。 + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "uid": "317832114", + "cookie_token": "O4ljtFwozX0UzHg29PDffnEBQPMYxmzcEJpe5Fgz" + } +} +``` +
+ +### 通过Cookie Token获取Hk4e Token + +**国服:** + +_请求方式:POST_ + +> _需要验证Cookie_ +> +> Account ID:`account_id` +> +> Cookie Token:`cookie_token` + +`https://api-takumi.mihoyo.com/auth/api/getCookieAccountInfoByGameToken` + +**参数:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| account_id | num | 对应的米游社账号UID | | + + +**JSON返回:** + +根对象: + + + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "game": "hk4e", + "region": "cn_gf01", + "game_uid": "222681079", + "game_biz": "hk4e_cn", + "level": 58, + "nickname": "※青衫入雨※", + "region_name": "天空岛" + } +} +``` +
+ +## Auth Key + +### 通过SToken获取账号Auth Key A + +**国服:** + +_请求方式:POST_ + +> _需要验证Cookie_ +> +> SToken + +`https://api-takumi.miyoushe.com/account/auth/api/genAuthKey` + +**JSON请求:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| game_biz | str | 米游社区域
bbs_cn 国服 | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码
1002 请求体的`game_biz`字段不正确 | | +| message | str | 返回消息 | | +| data | obj | Auth Key A | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| sign_type | num | 2 | | +| authkey_ver | num | 1 | | +| authkey | str | Auth Key A | | + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "sign_type": 2, + "authkey_ver": 1, + "authkey": "***" + } +} +``` + +
+ +**国际服:** + +`未知` + +### 通过SToken获取账号Auth Key B + +用例:获取用户的游戏抽卡记录等API需要使用到Auth Key B。 + +**国服:** + +_请求方式:POST_ + +> _需要验证请求头_ +> +> `x-rpc-client_type`:`2` +> +> LK`salt` +> +> `DS1` + +> _需要验证Cookie_ +> +> SToken + +`https://api-takumi.miyoushe.com/binding/api/genAuthKey` + + +**JSON请求:** + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| game_biz | str | 获取的`authkey`B的游戏
hk4e_cn 《原神》国服
hkrpg_cn 《崩坏:星穹铁道》国服
| | +| game_uid | num | 用户的游戏UID | | + +**JSON返回:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| retcode | num | 返回码
1002 请求体的`game_biz`字段不正确 | | +| message | str | 返回消息 | | +| data | obj | Auth Key B | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| sign_type | num | 2 | | +| authkey_ver | num | 1 | | +| authkey | str | Auth Key B | | + +
+查看示例 + +```json +{ + "retcode": 0, + "message": "OK", + "data": { + "sign_type": 2, + "authkey_ver": 1, + "authkey": "***" + } +} +``` + +
+ +**国际服:** + +`未知` \ No newline at end of file diff --git a/other/authentication.md b/other/authentication.md index c02a66f..48750b9 100644 --- a/other/authentication.md +++ b/other/authentication.md @@ -15,9 +15,9 @@ 大多数API需要验证的请求头:`x-rpc-app_version`、`x-rpc-client_type`、`x-rpc-device_id`、`X-Requested-With`、`Origin`、`Referer`、`Host`、`DS`、`User-Agent`。 -少数API才需要验证的额外的请求头:`x-rpc-device_fp`、`x-rpc-challenge`。 +少数API才需要验证的额外的请求头:`x-rpc-device_fp`、`x-rpc-challenge`、`x-rpc-app_id`。 -可选请求头:`x-rpc-device_name`、`x-rpc-device_model`、`x-rpc-sys_version`、`x-rpc-channel`。 +可选请求头:`x-rpc-device_name`、`x-rpc-device_model`、`x-rpc-sys_version`、`x-rpc-channel`、`x-rpc-game_biz`。 **说明:** @@ -63,7 +63,7 @@ _注:以下列表只是说明该请求头的值通常在哪些平台出现, #### `x-rpc-device_name` -手机厂商和手机型号,例如小米11青春版则为`Xiaomi M2101K9C`。 +手机厂商和手机型号,例如`Xiaomi M2101K9C`。 #### `x-rpc-device_model` @@ -73,6 +73,10 @@ _注:以下列表只是说明该请求头的值通常在哪些平台出现, 发送POST请求至`https://public-data-api.mihoyo.com/device-fp/api/getFp`以获得。 +#### `x-rpc-app_id` + +一般为`bll8iq97cem8`。 + #### `x-rpc-device_id` 设备ID,由使用的设备决定。 @@ -276,6 +280,24 @@ const final = `${t},${r},${ds}` // 最终结果 若API无需登录账号,就不需要设置Cookie。 +**API的Cookie标识格式** + +像SToken,只有1种字段值,或是像LToken,2种字段值都被兼容,则只标识Cookie名。 + +```markdown +> _需要验证Cookie_ +> +> SToken +``` + +若像Account ID,有多种字段值,将会在其之后标识需要的字段名。若有多个兼容的字段名,使用“、”分隔。 + +```markdown +> _需要验证Cookie_ +> +> Account ID:`account_id` +``` + ### 米游社 需要哪些Cookie取决于以下因素: @@ -288,7 +310,7 @@ const final = `${t},${r},${ds}` // 最终结果 即`ltoken_v2`和`ltoken`。 -`ltoken_v2`多用于查询用户的游戏账号信息。 +`ltoken_v2`和`ltoken`多用于查询用户的游戏账号信息。 必须与[`ltmid_v2`](#mihoyo-id)一起使用。 @@ -300,22 +322,41 @@ const final = `${t},${r},${ds}` // 最终结果 必须与[`mid`](#mihoyo-id)一起使用。 -#### Mihoyo ID +#### MiHoYo ID 分为与[LToken](#ltoken)一起使用的`ltmid_v2`,和与[SToken](#stoken)一起使用的`mid` `ltmid_v2`和`mid`的值是相同,对应一个账号。 +#### Account ID + +有`account_id_v2`、`account_id`、`login_uid`、`ltuid`和`stuid`。 + +UID即米游社UID。这个Cookie不是必须传递的。 + #### Login Ticket 即`login_ticket`。 -`login_ticket`是米游社的登录凭证,隔一段时间刷新。作用未知。 +`login_ticket`是米游社的登录凭证,可用于获取[SToken](#stoken)和[LToken](#ltoken)。隔一段时间刷新。 + +通常在[米游社通行证](https://user.mihoyo.com/)中登录获得。 #### Cookie Token -即`cookie_token_v2`。 +分为`cookie_token`和`cookie_token_v2`。 -`cookie_token_v2`隔一段时间刷新。作用未知。 +`cookie_token`与`cookie_token_v2`的值不相同。Cookie Token用于签到福利。 +#### Game Token + +即`game_token`。 + +`game_token`为游戏登录凭证,通常用于扫码登录后获取其它Token。 + +#### Hk4e Token + +即`e_hk4e_token`。 + +`e_hk4e_token`为米游社账号的《原神》账号标识,通常可以在《原神》的网页活动中见到。 diff --git a/other/error_code.md b/other/error_code.md index 895e321..6cafc26 100644 --- a/other/error_code.md +++ b/other/error_code.md @@ -15,11 +15,20 @@ | 1008 | 用户信息不匹配 | 传递的参数不正确
(例如获取用户游戏账号信息的`role_id`为无效UID) | | 10001 | Please login | 该API需要验证Cookie
请查看[绕过检测与鉴权](other/authentication.md#cookie) | | 1034 | | 请求遇到验证码 | - ### `api-takumi.miyoushe.com` | 错误码 | 消息 | 原因 | | ----- | ---- | ---- | | -10001 | invalid request | 该API需要验证请求头,请求头的一些字段缺失或错误
请查看[绕过检测与鉴权](other/authentication.md) | | -502 | Something went wrong...please retry later | 传递的参数错误 | -| -100 | 登录失效,请重新登录 | Cookie失效或不正确 | \ No newline at end of file +| -100 | 登录失效,请重新登录 | Cookie失效或不正确 | +| 1034 | | 请求遇到验证码 | + +### `api-takumi.mihoyo.com` + +| 错误码 | 消息 | 原因 | +| ----- | ---- | ---- | +| -502 | Something went wrong...please retry later | 传递的参数错误 | +| -101 | 参数错误 | 传递的参数缺失或错误 | +| -100 | 登录失效,请重新登录
-100 | Cookie失效或不正确 | +| 1000 | 参数错误 | 传递的参数缺失或错误 | \ No newline at end of file