mihoyo-api-collect/hoyolab/user/token.md
Kamisato-Ayaka-233 555a48056d 【P】修复不合理的说明
【A】在首页增加缺失的文档超链接
2023-09-11 19:48:08 +08:00

700 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 用户Token
- [Token](#token)
- [通过Login Ticket获取STokenV1和LTokenV1](#通过login-ticket获取stokenv1和ltokenv1)
- [通过SToken获取Cookie Token](#通过stoken获取cookie-token)
- [通过Game Token获取STokenV1]通过game-token获取stokenv1)
- [通过Game Token获取Cookie Token](#通过game-token获取cookie-token)
- [通过Cookie Token获取Hk4e Token](#通过cookie-token获取hk4e-token)
- [通过STokenV1获取STokenV2](#通过stokenv1获取stokenv2)
- [通过SToken获取LTokenV1](#通过stoken获取ltokenv1)
- [Action Ticket](#action-ticket)
- [通过SToken获取Action Ticket](#通过stoken获取action-ticket)
- [Auth Key](#auth-key)
- [通过SToken获取账号Auth Key A](#通过stoken获取账号auth-key-a)
- [通过SToken获取账号Auth Key B](#通过stoken获取账号auth-key-b)
---
## Token
### 通过Login Ticket获取STokenV1和LTokenV1
**国服:**
_请求方式GET_
`https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket`
**参数:**
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| token_types | num | 获取的Token的类型<br>1 仅SToken<br>2 仅LToken<br>3 SToken和LToken<br>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类型<br>ltoken LToken<br>stoken SToken | |
| token | str | Token值 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"list": [
{
"name": "stoken",
"token": "***"
},
{
"name": "ltoken",
"token": "***"
}
]
}
}
```
</details>
### 通过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 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"uid": "***",
"cookie_token": "***"
}
}
```
</details>
### 通过Game Token获取STokenV1
**国服:**
_请求方式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 | 返回码<br>-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 | 待调查 | |
<details>
<summary>查看示例</summary>
```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
}
}
```
</details>
### 通过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)→根对象的结构相同。
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"uid": "***",
"cookie_token": "***"
}
}
```
</details>
### 通过Cookie Token获取Hk4e Token
**国服:**
_请求方式POST_
> _需要验证Cookie_
>
> Account ID`account_id`
>
> Cookie Token`cookie_token`
`https://api-takumi.mihoyo.com/common/badge/v1/login/account`
**JSON请求**
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| region | str | 《原神》账号对应的服务器名称 | |
| uid | str | Cookie对应米游社账号已绑定的《原神》账号的UID | |
| game_biz | str | hk4e_cn | |
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码<br>-1002 游戏账号未绑定Cookie对应的账号 | |
| message | str | 返回消息 | |
| data | obj | 《原神》账号的基础信息 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| game | str | hk4e | |
| region | str | 《原神》账号对应的服务器的名称 | |
| game_uid | str | 《原神》账号的UID | |
| game_biz | str | hk4e_cn | |
| level | num | 《原神》账号的冒险等级 | |
| nickname | str | 《原神》账号昵称 | |
| region_name | str | 《原神》账号对应服务器的称呼 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"game": "hk4e",
"region": "cn_gf01",
"game_uid": "222681079",
"game_biz": "hk4e_cn",
"level": 58,
"nickname": "※青衫入雨※",
"region_name": "天空岛"
}
}
```
</details>
### 通过STokenV1获取STokenV2
**国服:**
_请求方式POST_
> _需要验证请求头_
>
> `x-rpc-app_id``bll8iq97cem8`
> _需要验证Cookie_
>
> SToken
`https://passport-api.mihoyo.com/account/ma-cn-session/app/getTokenBySToken`
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码 | |
| message | str | 返回消息 | |
| data | obj | 该账号的STokenV2与部分账号个人信息 | 个人信息已隐藏 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| token | obj | 该账号的STokenV2 | |
| user_info | obj | 部分账号个人信息 | 个人信息已隐藏 |
| need_realperson | bool | 待调查 | |
| realname_info | | 待调查 | |
`data`对象→`token`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| token_type | num | 1 | |
| token | str | 该账号的STokenV2 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"token": {
"token_type": 1,
"token": "***"
},
"user_info": {
"aid": "317832114",
"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": [],
"country": ""
},
"realname_info": null,
"need_realperson": false
}
}
```
</details>
### 通过SToken获取LTokenV1
**国服:**
_请求方式GET_
> _需要验证Cookie_
>
> SToken
`https://passport-api.mihoyo.com/account/auth/api/getLTokenBySToken`
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码 | |
| message | str | 返回消息 | |
| data | obj | 该账号的LTokenV1 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| ltoken | str | 该账号的LTokenV1 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"ltoken": "******"
}
}
```
</details>
## Action Ticket
### 通过SToken获取Action Ticket
**国服:**
_请求方式GET_
> _需要验证Cookie_
>
> SToken
`https://api-takumi.mihoyo.com/auth/api/getActionTicketBySToken`
**参数:**
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| action_type | str | 获取Action Ticket的用途<br>game_role 获取绑定游戏账号信息 | |
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码 | |
| message | str | 返回消息 | |
| data | obj | 对应用途的Action Ticket与部分账号个人信息 | 个人信息已隐藏 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| ticket | str | Action Ticket | |
| is_verified | bool | 待调查 | |
| account_info | obj | 部分个人信息 | 个人信息已隐藏 |
`data`对象→`account_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| is_realname | bool | 待调查 | |
| mobile | str | 绑定手机的手机号 | |
| safe_mobile | str | 安全手机的手机号 | 历史遗留字段,现在安全手机的功能已经被移除了 |
| safe_area_code | str | 安全手机的国家号码 | 历史遗留字段,现在安全手机的功能已经被移除了 |
| account_id | str | Cookie对应米游社账号的ID | |
| account_name | str | 空字符串 | |
| email | str | 被隐藏的绑定邮箱 | |
| is_email_verify | bool | 绑定邮箱是否已通过验证 | |
| area_code | str | 绑定手机的国家号码 | |
| real_name | str | 被隐藏的实名认证中的姓名 | |
| identify_code | str | 被隐藏的实名认证中的身份证号 | |
| create_time | str | 该米游社账号创建时间的Unix时间戳 | |
| create_ip | str | 待调查 | |
| change_pwd_time | sr | 待调查 | |
| nickname | str | 空字符串 | |
| user_icon_id | num | 待调查 | |
| safe_level | num | 该账号的安全等级<br>3 高 | |
| black_endtime | str | 待调查 | |
| black_note | str | 待调查 | |
| gender | num | 性别 | |
| real_stat | num | 待调查 | |
| apple_name | str | 待调查 | |
| sony_name | str | 待调查 | |
| tap_name | str | 待调查 | |
| reactivate_ticket | str | 待调查 | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"ticket": "***",
"is_verified": false,
"account_info": {
"is_realname": false,
"mobile": "***********",
"safe_mobile": "",
"account_id": "317832114",
"account_name": "",
"email": "262****725@qq.com",
"is_email_verify": true,
"area_code": "+86",
"safe_area_code": "",
"real_name": "***",
"identity_code": "******************",
"create_time": "1646740732",
"create_ip": "",
"change_pwd_time": "0",
"nickname": "",
"user_icon_id": 0,
"safe_level": 3,
"black_endtime": "0",
"black_note": "",
"gender": 0,
"real_stat": 0,
"apple_name": "",
"sony_name": "",
"tap_name": "",
"reactivate_ticket": ""
}
}
}
```
</details>
**国际服:**
`未知`
## Auth Key
### 通过SToken获取账号Auth Key A
**国服:**
_请求方式POST_
> _需要验证Cookie_
>
> SToken
`https://api-takumi.miyoushe.com/account/auth/api/genAuthKey`
**JSON请求**
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| game_biz | str | 米游社区域<br>bbs_cn 国服 | |
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码<br>1002 请求体中有字段不正确 | |
| message | str | 返回消息 | |
| data | obj | Auth Key A | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| sign_type | num | 2 | |
| authkey_ver | num | 1 | |
| authkey | str | Auth Key A | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"sign_type": 2,
"authkey_ver": 1,
"authkey": "***"
}
}
```
</details>
**国际服:**
`未知`
### 通过SToken获取账号Auth Key B
用例获取用户的游戏抽卡记录等API需要使用到Auth Key B。
**国服:**
_请求方式POST_
> _需要验证请求头_
>
> `x-rpc-client_type``5`
>
> LK2`salt`
>
> `DS1`
> _需要验证Cookie_
>
> SToken
`https://api-takumi.miyoushe.com/binding/api/genAuthKey`
<!--`https://hk4e-sdk.mihoyo.com/hk4e_cn/combo/granter/login/genAuthKey`-->
**JSON请求**
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| game_biz | str | 获取的Auth Key B的游戏<br>hk4e_cn 《原神》国服<br>hkrpg_cn 《崩坏:星穹铁道》国服<br> | |
| game_uid | num | 用户的游戏UID | |
| region | str | 用户游戏ID对应的服务器的名称 | |
| auth_appid | str | 获取的Auth Key B的类型<br>im_ccs 米游社<br>csc 米游社联系客服页面<br>webview_gacha 游戏抽卡记录 | |
**JSON返回**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码<br>1002 请求体中有字段不正确<br>1016 游戏账号未绑定Cookie对应的账号 | |
| message | str | 返回消息 | |
| data | obj | Auth Key B | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| sign_type | num | 2 | |
| authkey_ver | num | 1 | |
| authkey | str | Auth Key B | |
<details>
<summary>查看示例</summary>
```json
{
"retcode": 0,
"message": "OK",
"data": {
"sign_type": 2,
"authkey_ver": 1,
"authkey": "***"
}
}
```
</details>
**国际服:**
`未知`