Files
mihoyo-api-collect/hoyolab/login/qrcode.md
Kamisato-Ayaka-233 a5876bcd10 - 【F】增加扫码登录获取Game Token的方法与接口
- 【F】补全账号Cookie的获取方式
- 【F】增加Cookie字段
- 【I】修改请求头描述
- 【I】更改部分文档中错误的目录结构
2023-06-17 13:36:05 +08:00

3.8 KiB
Raw Blame History

米游社扫码登录


扫码登录

操作步骤

  1. 生成二维码,记录返回data对象的url及其URL参数中的ticket字段(下称ticket)。
  2. 生成二维码供用户扫描。
  3. 不断查询二维码扫描状态。在用户扫描并确认登录后,获取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
查看示例
{
  "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
查看示例
// 未扫描
{
  "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": ""
    }
  }
}