米游社扫码登录(GameToken)
大约 2 分钟
米游社扫码登录(GameToken)
扫码登录
操作步骤
- 生成二维码,记录返回
data
对象的url
,及其URL参数中的ticket
字段(下称ticket
)。 - 生成二维码供用户扫描。
- 不断查询二维码扫描状态。在用户扫描并确认登录后,获取
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 | 使用了Unicode转义 |
查看示例
{
"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 | 确认登录之前为空字符串,之后则为米游社账号ID和Game Token(为JSON格式),其中的token 字段即为账号的Game Token | |
ext | str | 空字符串 |
查看示例
// 未扫描
{
"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": ""
}
}
}