mirror of
https://github.com/PaiGramTeam/mihoyo-api-collect.git
synced 2024-11-25 01:29:39 +00:00
【P】修复不合理的说明
【A】在首页增加缺失的文档超链接
This commit is contained in:
parent
469126cfcf
commit
555a48056d
@ -77,8 +77,9 @@
|
|||||||
|
|
||||||
- [ ] [米游社](hoyolab)
|
- [ ] [米游社](hoyolab)
|
||||||
- [ ] [登录](hoyolab/login)
|
- [ ] [登录](hoyolab/login)
|
||||||
- [x] [密码登录](hoyolab/login/password.md)
|
|
||||||
- [x] [验证码登录](hoyolab/login/sms.md)
|
- [x] [验证码登录](hoyolab/login/sms.md)
|
||||||
|
- [x] [密码登录(米游社)](hoyolab/login/password_hoyolab.md)
|
||||||
|
- [x] [密码登录(米哈游通行证)](hoyolab/login/password_passport.md)
|
||||||
- [x] [扫码登录(GameToken)](hoyolab/login/qrcode_hk4e.md)
|
- [x] [扫码登录(GameToken)](hoyolab/login/qrcode_hk4e.md)
|
||||||
- [x] [扫码登录(米游社)](hoyolab/login//qrcode_hoyolab.md)
|
- [x] [扫码登录(米游社)](hoyolab/login//qrcode_hoyolab.md)
|
||||||
- [ ] [论坛](hoyolab/forum)
|
- [ ] [论坛](hoyolab/forum)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
- [密码登录](#密码登录)
|
- [密码登录](#密码登录)
|
||||||
- [操作步骤](#操作步骤)
|
- [操作步骤](#操作步骤)
|
||||||
- [获取设备指纹信息(device_fp)](#获取设备指纹信息)
|
- [获取设备指纹(`device_fp`)](#获取设备指纹)
|
||||||
- [发送登录请求](#发送登录请求)
|
- [发送登录请求](#发送登录请求)
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
### 操作步骤
|
### 操作步骤
|
||||||
|
|
||||||
1. [获取设备指纹信息](#获取设备指纹信息),记录返回`data`对象的`device_fp。
|
1. [获取设备指纹信息](#获取设备指纹),记录返回`data`对象的`device_fp`。
|
||||||
2. 向服务器传入账号密码以获取登录信息。
|
2. 向服务器传入账号密码以[获取登录信息](#发送登录请求),获取响应头中所有`Set-Cookie`。可获取的Cookie有:Account ID、MiHoYo id、LToken(V2)、特定Cookie Token。
|
||||||
|
|
||||||
### 获取设备指纹信息
|
### 获取设备指纹
|
||||||
|
|
||||||
**国服:**
|
**国服:**
|
||||||
|
|
||||||
@ -26,13 +26,13 @@ _请求方式:POST_
|
|||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---------- | ---- | ----------------------------------- | --------------------------------------------------------- |
|
| ---------- | ---- | ----------------------------------- | --------------------------------------------------------- |
|
||||||
| device_id | str | 设备id | |
|
| device_id | str | 设备ID | |
|
||||||
| seed_id | str | 种子id | 可随机生成 |
|
| seed_id | str | 一般为随机值 | |
|
||||||
| seed_time | str | 当前UNIX时间戳 | |
|
| seed_time | str | 当前的Unix时间戳 | |
|
||||||
| platform | str | 设备平台 | 不同的设备平台需要包含的拓展字段内容不同 |
|
| platform | str | 设备平台<br>1 iOS<br>2 安卓<br>4 网页 | 不同的设备平台需要在`ext_fields`字段中填写的的内容不同 |
|
||||||
| device_fp | str | 设备指纹信息 | 可随机生成 |
|
| device_fp | str | 设备指纹 | 在此处可随机生成 |
|
||||||
| app_name | str | 请求的应用名称<br /> bbs_cn 米游社 | |
|
| app_name | str | 请求的应用标识符<br>bbs_cn 米游社 | |
|
||||||
| ext_fields | str | 拓展字段 | 为使用字符串包裹的 json 字段,若platform为4则必须包含 userAgent 字段,若platform为2则需要包含['cpuType', 'romCapacity', 'productName', 'romRemain', 'manufacturer', 'appMemory', 'hostname', 'screenSize', 'osVersion', 'aaid', 'vendor', 'accelerometer', 'buildTags', 'model', 'brand', 'oaid', 'hardware', 'deviceType', 'devId', 'serialNumber', 'buildTime', 'buildUser', 'ramCapacity', 'magnetometer', 'display', 'ramRemain', 'deviceInfo', 'gyroscope', 'vaid', 'buildType', 'sdkVersion', 'board']字段 |
|
| ext_fields | str | 一些设备信息 | 为JSON字符串。若`platform`为`4`,则必须包含`userAgent`字段;若`platform`为`2`,则需要包含['cpuType', 'romCapacity', 'productName', 'romRemain', 'manufacturer', 'appMemory', 'hostname', 'screenSize', 'osVersion', 'aaid', 'vendor', 'accelerometer', 'buildTags', 'model', 'brand', 'oaid', 'hardware', 'deviceType', 'devId', 'serialNumber', 'buildTime', 'buildUser', 'ramCapacity', 'magnetometer', 'display', 'ramRemain', 'deviceInfo', 'gyroscope', 'vaid', 'buildType', 'sdkVersion', 'board']字段 |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>查看示例</summary>
|
<summary>查看示例</summary>
|
||||||
@ -46,52 +46,52 @@ _请求方式:POST_
|
|||||||
"device_fp": "38d7efe8b7f79",
|
"device_fp": "38d7efe8b7f79",
|
||||||
"app_name": "bbs_cn",
|
"app_name": "bbs_cn",
|
||||||
"ext_fields": "{
|
"ext_fields": "{
|
||||||
\"cpuType\":\"arm64-v8a\",
|
\"cpuType\":\"arm64-v8a\",
|
||||||
\"romCapacity\":\"512\",
|
\"romCapacity\":\"512\",
|
||||||
\"productName\":\"ishtar\",
|
\"productName\":\"ishtar\",
|
||||||
\"romRemain\":\"459\",
|
\"romRemain\":\"459\",
|
||||||
\"manufacturer\":\"Xiaomi\",
|
\"manufacturer\":\"Xiaomi\",
|
||||||
\"appMemory\":\"512\",
|
\"appMemory\":\"512\",
|
||||||
\"hostname\":\"xiaomi.eu\",
|
\"hostname\":\"xiaomi.eu\",
|
||||||
\"screenSize\":\"1440x3022\",
|
\"screenSize\":\"1440x3022\",
|
||||||
\"osVersion\":\"13\",
|
\"osVersion\":\"13\",
|
||||||
\"aaid\":\"a945fe0c-5f49-4481-9ee8-418e74508414\",
|
\"aaid\":\"a945fe0c-5f49-4481-9ee8-418e74508414\",
|
||||||
\"vendor\":\"中国电信\",
|
\"vendor\":\"中国电信\",
|
||||||
\"accelerometer\":\"0.061016977x0.8362915x9.826724\",
|
\"accelerometer\":\"0.061016977x0.8362915x9.826724\",
|
||||||
\"buildTags\":\"release-keys\",
|
\"buildTags\":\"release-keys\",
|
||||||
\"model\":\"2304FPN6DC\",
|
\"model\":\"2304FPN6DC\",
|
||||||
\"brand\":\"Xiaomi\",
|
\"brand\":\"Xiaomi\",
|
||||||
\"oaid\":\"67b292338ad57a24\",
|
\"oaid\":\"67b292338ad57a24\",
|
||||||
\"hardware\":\"qcom\",
|
\"hardware\":\"qcom\",
|
||||||
\"deviceType\":\"ishtar\",
|
\"deviceType\":\"ishtar\",
|
||||||
\"devId\":\"REL\",
|
\"devId\":\"REL\",
|
||||||
\"serialNumber\":\"unknown\",
|
\"serialNumber\":\"unknown\",
|
||||||
\"buildTime\":\"1690889245000\",
|
\"buildTime\":\"1690889245000\",
|
||||||
\"buildUser\":\"builder\",
|
\"buildUser\":\"builder\",
|
||||||
\"ramCapacity\":\"229481\",
|
\"ramCapacity\":\"229481\",
|
||||||
\"magnetometer\":\"80.64375x-14.1x77.90625\",
|
\"magnetometer\":\"80.64375x-14.1x77.90625\",
|
||||||
\"display\":\"TKQ1.221114.001 release-keys\",
|
\"display\":\"TKQ1.221114.001 release-keys\",
|
||||||
\"ramRemain\":\"110308\",
|
\"ramRemain\":\"110308\",
|
||||||
\"deviceInfo\":"Xiaomi/ishtar/ishtar:13/TKQ1.221114.001/V14.0.17.0.TMACNXM:user/release-keys",
|
\"deviceInfo\":\"Xiaomi/ishtar/ishtar:13/TKQ1.221114.001/V14.0.17.0.TMACNXM:user/release-keys\",
|
||||||
\"gyroscope\":\"7.9894776E-4x-1.3315796E-4x6.6578976E-4\",
|
\"gyroscope\":\"7.9894776E-4x-1.3315796E-4x6.6578976E-4\",
|
||||||
\"vaid\":\"4c10d338150078d8",
|
\"vaid\":\"4c10d338150078d8\",
|
||||||
\"buildType\":\"user\",
|
\"buildType\":\"user\",
|
||||||
\"sdkVersion\":\"33\",
|
\"sdkVersion\":\"33\",
|
||||||
\"board\":\"kalama\"
|
\"board\":\"kalama\"
|
||||||
}",
|
}",
|
||||||
"bbs_device_id": "b66a6178-f56d-30ed-97aa-297560c98fc1"
|
"bbs_device_id": "b66a6178-f56d-30ed-97aa-297560c98fc1"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
**JSON 返回:**
|
**JSON返回:**
|
||||||
|
|
||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------- | ---- | --------------- | ---- |
|
| ------- | ---- | --------------- | ---- |
|
||||||
| retcode | num | 返回码 | -502 传入的内容有误 |
|
| retcode | num | 返回码<br>-502 传入的内容有误 | |
|
||||||
| message | str | 返回消息 | |
|
| message | str | 返回消息 | |
|
||||||
| data | obj | 设备指纹 | |
|
| data | obj | 设备指纹 | |
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ _请求方式:POST_
|
|||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------ | ---- | ------------------ | ------------------- |
|
| ------ | ---- | ------------------ | ------------------- |
|
||||||
| device_fp | str | 设备指纹 | |
|
| device_fp | str | 设备指纹 | |
|
||||||
| code | num | 回传的http状态码 | |
|
| code | num | 返回码 | |
|
||||||
| msg | str | 错误消息 | |
|
| msg | str | 错误消息 | |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -108,13 +108,13 @@ _请求方式:POST_
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
'data':{
|
"message": "OK",
|
||||||
'code': 200,
|
"retcode": 0,
|
||||||
'device_fp': 'ui33vcedffou',
|
"data": {
|
||||||
'msg': 'ok'
|
"code": 200,
|
||||||
},
|
"device_fp": "ui33vcedffou",
|
||||||
'message': 'OK',
|
"msg": "ok"
|
||||||
'retcode': 0
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -134,11 +134,9 @@ _请求方式:POST_
|
|||||||
>
|
>
|
||||||
> `x-rpc-game_biz`:`bbs_cn`
|
> `x-rpc-game_biz`:`bbs_cn`
|
||||||
>
|
>
|
||||||
> `x-rpc-device_fp`
|
> `x-rpc-device_fp`:刚获取的设备指纹
|
||||||
>
|
>
|
||||||
> `x-rpc-device_id`
|
> `x-rpc-device_id`:与上个步骤传递的设备ID相同
|
||||||
>
|
|
||||||
> *其中`x-rpc-device_fp`的值为刚才获取的`device_fp`的值*
|
|
||||||
|
|
||||||
`https://passport-api.mihoyo.com/account/ma-cn-passport/app/loginByPassword`
|
`https://passport-api.mihoyo.com/account/ma-cn-passport/app/loginByPassword`
|
||||||
|
|
||||||
@ -146,8 +144,8 @@ _请求方式:POST_
|
|||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](password_passport.md#%E8%8E%B7%E5%8F%96login-ticket) |
|
| account | str | 将登录账户的绑定邮箱或绑定手机 | 使用RSA + Base64加密,加密方式[详见该页面](password_passport.md#获取login-ticket) |
|
||||||
| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](password_passport.md#%E8%8E%B7%E5%8F%96login-ticket) |
|
| password | str | 将登录账户的密码 | 使用RSA + Base64加密,加密方式[详见该页面](password_passport.md#获取login-ticket) |
|
||||||
|
|
||||||
**JSON返回:**
|
**JSON返回:**
|
||||||
|
|
||||||
@ -155,70 +153,94 @@ _请求方式:POST_
|
|||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| retcode | num | 返回码<br> | |
|
| retcode | num | 返回码 | |
|
||||||
| message | str | 返回消息 | |
|
| message | str | 返回消息 | |
|
||||||
| data | obj | 账户信息| |
|
| data | obj | 账号信息 | |
|
||||||
|
|
||||||
`data`对象:
|
`data`对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| login_ticket | str | Login Ticket | |
|
| login_ticket | str | Login Ticket | 在一些情况下没有该字段 |
|
||||||
| need_realperson | str | 是否要求用户进行实名认证 | |
|
| need_realperson | str | 是否要求用户进行实名认证 | |
|
||||||
| token | obj | 包含stoken_v2?的对象 | |
|
| token | obj | 该账户的SToken(V2) | 在一些情况下没有该字段 |
|
||||||
| user_info | obj | 用户信息 | |
|
| user_info | obj | 用户信息 | |
|
||||||
|
| reactivate_info | obj | 待调查 | |
|
||||||
|
| realname_info | obj | 待调查 | |
|
||||||
|
|
||||||
`user_info`对象:
|
`data`对象→`user_info`对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| --------------- | ---- | -------------------------------------------- | ------------ |
|
| --------------- | ---- | -------------------------------------------- | ------------ |
|
||||||
| account_name | str | 账户名 | 国服默认为空 |
|
| account_name | str | 账号名称 | 总是为空字符串 |
|
||||||
| aid | str | Account ID | |
|
| aid | str | Account ID | |
|
||||||
| area_code | str | 账户所绑定的电话号码对应的国家区号 | |
|
| area_code | str | 账号所绑定的电话号码对应的国家区号 | |
|
||||||
| country | str | 国家 | 国服默认为空 |
|
| country | str | 国家 | 总是为空字符串 |
|
||||||
| email | str | 账户所绑定的邮箱 | |
|
| email | str | 账号所绑定的邮箱 | |
|
||||||
| identity_code | str | 身份证号码 | |
|
| identity_code | str | 账号的实名认证身份证号 | |
|
||||||
| is_email_verify | str | 邮箱是否认证通过<br />1 已认证<br />0 未认证 | |
|
| is_email_verify | str | 邮箱是否通过认证<br>1 已认证<br>0 未认证 | |
|
||||||
| links | str | 第三方绑定信息 | |
|
| links | str | 第三方绑定信息 | |
|
||||||
| mid | str | MiHoYo ID | |
|
| mid | str | MiHoYo ID | |
|
||||||
| mobile | str | 账户所绑定的电话号码 | |
|
| mobile | str | 账号的绑定手机 | |
|
||||||
| realname | str | 用户的真实姓名 | |
|
| realname | str | 账号的实名认证姓名 | |
|
||||||
|
|
||||||
|
`data`对象→`token`对象:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|
| ---- | --- | ---- | ---- |
|
||||||
|
| token_type | num | 1 | |
|
||||||
|
| token | str | SToken(V2) | |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>查看示例</summary>
|
<summary>查看示例</summary>
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
'data': {'login_ticket': '***',
|
"data": {
|
||||||
'need_realperson': False,
|
"login_ticket": "***",
|
||||||
'reactivate_info': {'required': False, 'ticket': ''},
|
"need_realperson": false,
|
||||||
'realname_info': {'action_ticket': '',
|
"reactivate_info": {
|
||||||
'action_type': '',
|
"required": false,
|
||||||
'required': False},
|
"ticket": ""
|
||||||
'token': {'token': '***',
|
},
|
||||||
'token_type': 1},
|
"realname_info": {
|
||||||
'user_info': {'account_name': '',
|
"action_ticket": "",
|
||||||
'aid': '311526738',
|
"action_type": "",
|
||||||
'area_code': '+86',
|
"required": false
|
||||||
'country': '',
|
},
|
||||||
'email': '***@***.****',
|
"token": {
|
||||||
'identity_code': '******************',
|
"token": "***",
|
||||||
'is_email_verify': 1,
|
"token_type": 1
|
||||||
'links': [{'email': '',
|
},
|
||||||
'nickname': '***',
|
"user_info": {
|
||||||
'subType': '',
|
"account_name": "",
|
||||||
'thirdparty': 'tp',
|
"aid": "311526738",
|
||||||
'union_id': '***'}],
|
"area_code": "+86",
|
||||||
'mid': '0d5cf7piru_mhy',
|
"country": "",
|
||||||
'mobile': '***********',
|
"email": "**********",
|
||||||
'realname': '***',
|
"identity_code": "******************",
|
||||||
'rebind_area_code': '',
|
"is_email_verify": 1,
|
||||||
'rebind_mobile': '',
|
"links": [
|
||||||
'rebind_mobile_time': '0',
|
{
|
||||||
'safe_area_code': '',
|
"email": "",
|
||||||
'safe_mobile': ''}},
|
"nickname": "***",
|
||||||
'message': 'OK',
|
"subType": "",
|
||||||
'retcode': 0
|
"thirdparty": "tp",
|
||||||
|
"union_id": "***"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mid": "******",
|
||||||
|
"mobile": "***********",
|
||||||
|
"realname": "***",
|
||||||
|
"rebind_area_code": "",
|
||||||
|
"rebind_mobile": "",
|
||||||
|
"rebind_mobile_time": "0",
|
||||||
|
"safe_area_code": "",
|
||||||
|
"safe_mobile": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"message": "OK",
|
||||||
|
"retcode": 0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
- [密码登录](#密码登录)
|
- [密码登录](#密码登录)
|
||||||
- [操作步骤](#pwd-step)
|
- [操作步骤](#pwd-step)
|
||||||
- [申请人机验证任务](#申请人机验证任务)
|
- [申请人机验证任务](#申请人机验证任务)
|
||||||
- [获取 Login Ticket](#获取login-ticket)
|
- [获取Login Ticket](#获取login-ticket)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
<h3 id="pwd-step">操作步骤</h3>
|
<h3 id="pwd-step">操作步骤</h3>
|
||||||
|
|
||||||
1. [申请人机验证任务](#申请人机验证任务),获取 `gt`,`mmt_key` 等任务数据
|
1. [申请人机验证任务](#申请人机验证任务),获取`gt`、`mmt_key`等验证数据
|
||||||
2. 使用账号密码 [获取 Login Ticket](#获取login-ticket)
|
2. 登录[获取Login Ticket](#获取login-ticket)
|
||||||
|
|
||||||
### 申请人机验证任务
|
### 申请人机验证任务
|
||||||
|
|
||||||
@ -24,12 +24,12 @@ _请求方式:GET_
|
|||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 可参考 [米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password) 使用的值为 `1` |
|
| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 可参考[米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password)使用的值为 `1` |
|
||||||
| now | num | 当前的秒级时间戳 | |
|
| now | num | 当前的Unix时间戳 | |
|
||||||
| reason | str | 调用API的网页链接 | 可参考 [米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password) 使用的是 `user.mihoyo.com%2523%252Flogin%252Fpassword`(已进行URL编码) |
|
| reason | str | 调用API的网页链接 | 可参考[米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password)使用`user.mihoyo.com%2523%252Flogin%252Fpassword`(已进行URL编码) |
|
||||||
| action_type | str | 登陆方式<br>`login_by_password` 密码登录 | |
|
| action_type | str | 登录方式<br>login_by_password 密码登录 | |
|
||||||
| t | num | 当前的秒级时间戳 | |
|
| t | num | 当前的Unix时间戳 | |
|
||||||
| account | str | 手机号或邮箱 | |
|
| account | str | 绑定手机或绑定邮箱 | |
|
||||||
|
|
||||||
**JSON返回:**
|
**JSON返回:**
|
||||||
|
|
||||||
@ -45,69 +45,65 @@ _请求方式:GET_
|
|||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| mmt_data | obj | 极验验证任务数据 | |
|
| mmt_data | obj | 极验验证任务数据 | |
|
||||||
| mmt_type | num | 验证任务类型<br>`1` 需要进行人机验证<br>`0` 无需进行人机验证 | |
|
| mmt_type | num | 验证任务类型<br>1 需要进行人机验证<br>0 无需进行人机验证 | |
|
||||||
| msg | str | 返回消息 | |
|
| msg | str | 返回消息 | |
|
||||||
| scene_type | num | 与URL请求参数中的 `scene_type` 相同 | |
|
| scene_type | num | 与URL请求参数中的`scene_type`相同 | |
|
||||||
| status | num | 返回码<br>`1` 成功 | |
|
| status | num | 返回码<br>1 成功 | |
|
||||||
|
|
||||||
`data`对象→`mmt_data`对象:
|
`data`对象→`mmt_data`对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| mmt_key | str | 验证任务 | 当 `mmt_data` 对象仅包含该字段时,说明不需要进行人机验证,可直接使用该值进行登录 |
|
| mmt_key | str | 验证任务 | 当 `mmt_data` 对象仅包含该字段时,说明不需要进行人机验证,可直接使用该值进行登录 |
|
||||||
| gt | str | 验证ID | 验证ID,即 [极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0) 中的`captchaId`,极验后台申请得到 |
|
| gt | str | 验证ID | 验证ID,即[极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)中的`captchaId`,通常为服务器申请得到 |
|
||||||
| new_captcha | num | 宕机情况下使用 | 一般为 `1` |
|
| new_captcha | num | 极验验证码相关的参数,是否为新验证码类型的离线情况下使用 | 一般为 `1` |
|
||||||
| risk_type | str | 结合风控融合,指定验证形式<br>`slide` 拖动滑块完成拼图 | |
|
| risk_type | str | 结合风控融合,指定验证形式<br>slide 拖动滑块完成拼图 | |
|
||||||
| success | num | 是否成功<br>`1` 成功 | |
|
| success | num | 是否成功<br>1 成功 | |
|
||||||
| use_v4 | bool | 是否使用极验第四代适应性验证 | 极验官网:https://www.geetest.com/adaptive-captcha |
|
| use_v4 | bool | 是否使用[极验第4代适应性验证](https://www.geetest.com/adaptive-captcha) | |
|
||||||
|
|
||||||
**备注:**
|
**备注:**
|
||||||
|
|
||||||
- 一般来说,密码登录基本上都不会被要求人机验证(但是谁知道呢)
|
- 一般来说,密码登录基本上都不会被要求人机验证(但是谁知道呢)
|
||||||
- 通常首次申请验证任务返回的 `mmt_data` 对象只会包含 `mmt_key`,不会返回 `gt` 等其他字段,这说明不需要进行人机验证,可直接使用 `mmt_key` 字段值进行登录(也可通过 `mmt_type` 判断)
|
- 通常首次申请验证任务返回的`mmt_data`对象只会包含`mmt_key`,不会返回`gt`等其他字段,这说明不需要进行人机验证,可直接使用`mmt_key`字段值进行登录(也可通过`mmt_type`判断)
|
||||||
- JSON返回数据的 `mmt_data` 对象中一些字段说明参考自 [极验官方文档](https://docs.geetest.com/gt4/apirefer/api/web)
|
- JSON返回数据的`mmt_data`对象中一些字段说明参考自[极验官方文档](https://docs.geetest.com/gt4/apirefer/api/web)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>查看示例</summary>
|
<summary>查看示例</summary>
|
||||||
|
|
||||||
- 请求:`https://webapi.account.mihoyo.com/Api/create_mmt?scene_type=1&now=1691855137471&reason=user.mihoyo.com%23%2Flogin%2Fpassword&action_type=login_by_password&account=<你的账户>&t=1691855137471`
|
```json
|
||||||
- 返回:
|
// 无需进行验证时:
|
||||||
- 无需进行人机验证的情况:
|
{
|
||||||
```json
|
"code": 200,
|
||||||
{
|
"data": {
|
||||||
"code": 200,
|
"mmt_data": {
|
||||||
"data": {
|
"mmt_key": "nAZzNc45p76J85nz3PRV6tjGp0SX9TDc"
|
||||||
"mmt_data": {
|
},
|
||||||
"mmt_key": "nAZzNc45p76J85nz3PRV6tjGp0SX9TDc"
|
"mmt_type": 0,
|
||||||
},
|
"msg": "成功",
|
||||||
"mmt_type": 0,
|
"scene_type": 1,
|
||||||
"msg": "成功",
|
"status": 1
|
||||||
"scene_type": 1,
|
}
|
||||||
"status": 1
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- 需要进行人机验证的情况:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"data": {
|
|
||||||
"mmt_data": {
|
|
||||||
"gt": "0b3dbaab0ad3f8344ab45342c3f3d909",
|
|
||||||
"mmt_key": "3hfbcdJd5K9g23Fu0hRFA7DDDRRzKJdC",
|
|
||||||
"new_captcha": 1,
|
|
||||||
"risk_type": "slide",
|
|
||||||
"success": 1,
|
|
||||||
"use_v4": true
|
|
||||||
},
|
|
||||||
"mmt_type": 1,
|
|
||||||
"msg": "成功",
|
|
||||||
"scene_type": 1,
|
|
||||||
"status": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
// 需要进行验证时
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"data": {
|
||||||
|
"mmt_data": {
|
||||||
|
"gt": "0b3dbaab0ad3f8344ab45342c3f3d909",
|
||||||
|
"mmt_key": "3hfbcdJd5K9g23Fu0hRFA7DDDRRzKJdC",
|
||||||
|
"new_captcha": 1,
|
||||||
|
"risk_type": "slide",
|
||||||
|
"success": 1,
|
||||||
|
"use_v4": true
|
||||||
|
},
|
||||||
|
"mmt_type": 1,
|
||||||
|
"msg": "成功",
|
||||||
|
"scene_type": 1,
|
||||||
|
"status": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### 获取Login Ticket
|
### 获取Login Ticket
|
||||||
@ -116,7 +112,7 @@ _请求方式:POST_
|
|||||||
|
|
||||||
`https://webapi.account.mihoyo.com/Api/login_by_password`
|
`https://webapi.account.mihoyo.com/Api/login_by_password`
|
||||||
|
|
||||||
**参数:**
|
**JSON请求:**
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
@ -168,25 +164,25 @@ def rsa_encrypt(message):
|
|||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| account_info | obj | 账号信息 | |
|
| account_info | obj | 账号信息 | |
|
||||||
| msg | str | 返回消息 | |
|
| msg | str | 返回消息 | |
|
||||||
| status | num | 返回码<br>`1` 成功 | |
|
| status | num | 返回码<br>1 成功 | |
|
||||||
|
|
||||||
`data`对象→`account_info`对象:
|
`data`对象→`account_info`对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | ---- | ---- |
|
| ---- | ---- | ---- | ---- |
|
||||||
| account_id | num | 米游社账号ID | |
|
| account_id | num | 米游社账号ID | |
|
||||||
| area_code | str | 绑定手机的国家区号 | 如 `+86` |
|
| area_code | str | 绑定手机的国家区号 | |
|
||||||
| create_time | num | 账号注册时间的Unix时间戳 | 该值的中间部分将以星号隐藏 |
|
| create_time | num | 账号注册时间的Unix时间戳 | |
|
||||||
| email | str | 邮箱 | 该值的中间部分将以星号隐藏 |
|
| email | str | 账号的绑定邮箱 | 该值的中间部分将以星号隐藏 |
|
||||||
| identity_code | str | 身份证号 | |
|
| identity_code | str | 账号实名认证的身份证号 | |
|
||||||
| is_adult | num | 用户是否为成人<br>`1` 是 | |
|
| is_adult | num | 实名认证对应信息是否为成年<br>1 是 | |
|
||||||
| is_email_verify | num | 是否已验证邮箱<br>`1` 是 | |
|
| is_email_verify | num | 绑定邮箱是否已验证<br>1 是 | |
|
||||||
| mobile | str | 手机号 | 该值的中间部分将以星号隐藏 |
|
| mobile | str | 账号的绑定手机 | 该值的中间部分将以星号隐藏 |
|
||||||
| real_name | str | 真实姓名 | 该值的中间部分将以星号隐藏 |
|
| real_name | str | 账号实名认证的真实姓名 | 该值的中间部分将以星号隐藏 |
|
||||||
| safe_area_code | str | 绑定手机的国家区号 | 如 `+86` |
|
| safe_area_code | str | 安全手机的国家区号 | 该字段已弃用 |
|
||||||
| safe_level | num | 安全级别 | 该账号的安全级别<br/>3 高 |
|
| safe_level | num | 安全级别 | 该账号的安全级别<br>3 高 |
|
||||||
| safe_mobile | str | 绑定手机 | 该值的中间部分将以星号隐藏 |
|
| safe_mobile | str | 账号的安全手机 | 该字段已弃用 |
|
||||||
| weblogin_token | str | 即Cookie中的 Login Ticket 字段 | 该字段也将出现在响应Cookie中 |
|
| weblogin_token | str | Login Ticket | 该字段也将出现在响应头的`Set-Cookie`字段中 |
|
||||||
|
|
||||||
**备注:**
|
**备注:**
|
||||||
|
|
||||||
@ -194,31 +190,30 @@ def rsa_encrypt(message):
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>查看示例</summary>
|
<summary>查看示例</summary>
|
||||||
- 返回:
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"code": 200,
|
"code": 200,
|
||||||
"data": {
|
"data": {
|
||||||
"account_info": {
|
"account_info": {
|
||||||
"account_id": 123456789,
|
"account_id": 123456789,
|
||||||
"area_code": "+86",
|
"area_code": "+86",
|
||||||
"create_time": 1614948789,
|
"create_time": 1614948789,
|
||||||
"email": "user****mail@mail.com",
|
"email": "user****mail@mail.com",
|
||||||
"identity_code": "111************000",
|
"identity_code": "111************000",
|
||||||
"is_adult": 1,
|
"is_adult": 1,
|
||||||
"is_email_verify": 1,
|
"is_email_verify": 1,
|
||||||
"mobile": "181****8888",
|
"mobile": "181****8888",
|
||||||
"real_name": "**川",
|
"real_name": "**川",
|
||||||
"safe_area_code": "+86",
|
"safe_area_code": "+86",
|
||||||
"safe_level": 3,
|
"safe_level": 3,
|
||||||
"safe_mobile": "181****8888",
|
"safe_mobile": "181****8888",
|
||||||
"weblogin_token": "QDDgghjghHydhdxyduf875UIDYDYq"
|
"weblogin_token": "QDDgghjghHydhdxyduf875UIDYDYq"
|
||||||
},
|
},
|
||||||
"msg": "成功",
|
"msg": "成功",
|
||||||
"status": 1
|
"status": 1
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
}
|
||||||
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
1. [生成二维码](#生成二维码),记录返回`data`对象的`url`,和`data`对象的`ticket`字段(下称`ticket`)。
|
1. [生成二维码](#生成二维码),记录返回`data`对象的`url`,和`data`对象的`ticket`字段(下称`ticket`)。
|
||||||
2. 生成二维码供用户扫描。
|
2. 生成二维码供用户扫描。
|
||||||
3. 不断[查询二维码扫描状态](#查询二维码扫描状态)。在用户扫描并确认登录后,获取请求头中所有`Set-Cookie`。可获取的Cookie有:Account ID、MiHoYo id、LToken、特定Cookie Token。
|
3. 不断[查询二维码扫描状态](#查询二维码扫描状态)。在用户扫描并确认登录后,获取响应头中所有`Set-Cookie`。可获取的Cookie有:Account ID、MiHoYo id、LToken(V2)、特定Cookie Token。
|
||||||
|
|
||||||
### 生成二维码
|
### 生成二维码
|
||||||
|
|
||||||
@ -112,50 +112,50 @@ _请求方式:POST_
|
|||||||
```json
|
```json
|
||||||
// 未扫描
|
// 未扫描
|
||||||
{
|
{
|
||||||
"retcode": 0,
|
"retcode": 0,
|
||||||
"message": "OK",
|
"message": "OK",
|
||||||
"data": {
|
"data": {
|
||||||
"status": "Created",
|
"status": "Created",
|
||||||
"app_id": "bll8iq97cem8",
|
"app_id": "bll8iq97cem8",
|
||||||
"client_type": 4,
|
"client_type": 4,
|
||||||
"created_at": "1693555708",
|
"created_at": "1693555708",
|
||||||
"scanned_at": "0",
|
"scanned_at": "0",
|
||||||
"tokens": [],
|
"tokens": [],
|
||||||
"user_info": null,
|
"user_info": null,
|
||||||
"realname_info": null,
|
"realname_info": null,
|
||||||
"need_realperson": false
|
"need_realperson": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 已扫描
|
// 已扫描
|
||||||
{
|
{
|
||||||
"retcode": 0,
|
"retcode": 0,
|
||||||
"message": "OK",
|
"message": "OK",
|
||||||
"data": {
|
"data": {
|
||||||
"status": "Scanned",
|
"status": "Scanned",
|
||||||
"app_id": "bll8iq97cem8",
|
"app_id": "bll8iq97cem8",
|
||||||
"client_type": 4,
|
"client_type": 4,
|
||||||
"created_at": "1693555708",
|
"created_at": "1693555708",
|
||||||
"scanned_at": "1693555708",
|
"scanned_at": "1693555708",
|
||||||
"tokens": [],
|
"tokens": [],
|
||||||
"user_info": null,
|
"user_info": null,
|
||||||
"realname_info": null,
|
"realname_info": null,
|
||||||
"need_realperson": false
|
"need_realperson": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 已过期
|
// 已过期
|
||||||
{
|
{
|
||||||
"data": null,
|
"data": null,
|
||||||
"message": "二维码已失效,请刷新后重新扫描",
|
"message": "二维码已失效,请刷新后重新扫描",
|
||||||
"retcode": -3501
|
"retcode": -3501
|
||||||
}
|
}
|
||||||
|
|
||||||
//取消扫码
|
//取消扫码
|
||||||
{
|
{
|
||||||
"data": null,
|
"data": null,
|
||||||
"message": "扫码登录已取消,重新生成二维码",
|
"message": "扫码登录已取消,重新生成二维码",
|
||||||
"retcode": -3505
|
"retcode": -3505
|
||||||
}
|
}
|
||||||
|
|
||||||
// 已确认
|
// 已确认
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
- [Token](#token)
|
- [Token](#token)
|
||||||
- [通过Login Ticket获取SToken(V1)和LToken(V1)](#通过login-ticket获取stokenv1和ltokenv1)
|
- [通过Login Ticket获取SToken(V1)和LToken(V1)](#通过login-ticket获取stokenv1和ltokenv1)
|
||||||
- [通过SToken获取Cookie Token](#通过stoken获取cookie-token)
|
- [通过SToken获取Cookie Token](#通过stoken获取cookie-token)
|
||||||
- [通过Game Token获取SToken(V1)](#通过game-token获取stokenv1)
|
- [通过Game Token获取SToken(V1)]通过game-token获取stokenv1)
|
||||||
- [通过Game Token获取Cookie Token](#通过game-token获取cookie-token)
|
- [通过Game Token获取Cookie Token](#通过game-token获取cookie-token)
|
||||||
- [通过Cookie Token获取Hk4e Token](#通过cookie-token获取hk4e-token)
|
- [通过Cookie Token获取Hk4e Token](#通过cookie-token获取hk4e-token)
|
||||||
- [通过SToken(V1)获取SToken(V2)](#通过stokenv1获取stokenv2)
|
- [通过SToken(V1)获取SToken(V2)](#通过stokenv1获取stokenv2)
|
||||||
|
@ -190,6 +190,7 @@
|
|||||||
|
|
||||||
| 标识符 | 游戏 | 服务器 | 备注 |
|
| 标识符 | 游戏 | 服务器 | 备注 |
|
||||||
| ----- | ---- | ----- | ---- |
|
| ----- | ---- | ----- | ---- |
|
||||||
|
| bbs_cn | 米游社 | 国服 | |
|
||||||
| hk4e_cn | 原神 | 国服 | |
|
| hk4e_cn | 原神 | 国服 | |
|
||||||
| hk4e_global | 原神 | 国际服 | |
|
| hk4e_global | 原神 | 国际服 | |
|
||||||
| hkrpg_cn | 崩坏:星穹铁道 | 国服 | |
|
| hkrpg_cn | 崩坏:星穹铁道 | 国服 | |
|
||||||
|
Loading…
Reference in New Issue
Block a user