跳至主要內容

米游社扫码登录(GameToken)

UIGF-org大约 2 分钟

米游社扫码登录(GameToken)


扫码登录

操作步骤

  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_idstr登录的应用标识符
1 《崩坏3》
2 《未定事件簿》
4 《原神》
5 平台应用
7 《崩坏学园2》
8 《崩坏:星穹铁道》
9 云游戏
10 3NNN
11 PJSH
12 《绝区零》
13 HYG
任何值都没有区别,但是必须传递此参数
devicestr设备ID

JSON返回:

根对象:

字段类型内容备注
retcodenum返回码
messagestr返回消息
dataobj二维码指向的URL

data对象:

字段类型内容备注
urlstr二维码指向的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_idstr登录的应用标识符与生成二维码时传递的值相同
devicestr设备ID与生成二维码时传递的值相同
ticketstr生成二维码时从返回的URL的参数中,ticket字段的值

JSON返回:

根对象:

字段类型内容备注
retcodenum返回码
-106 二维码已过期
messagestr返回消息
dataobj二维码状态

data对象:

字段类型内容备注
statstr二维码状态
Init 未扫描
Scanned 已扫描
Confirmed 已确认
payloadobj登录数据

data对象→payload对象:

字段类型内容备注
protostr当前的数据类型
Raw 无数据
Account 已确认
rawstr确认登录之前为空字符串,之后则为米游社账号ID和Game Token(为JSON格式),其中的token字段即为账号的Game Token
extstr空字符串
查看示例
// 未扫描
{
  "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": ""
    }
  }
}