跳至主要內容

米游社扫码登录

UIGF-org大约 2 分钟

米游社扫码登录


扫码登录

操作步骤

  1. 生成二维码,记录返回data对象的url,和data对象的ticket字段(下称ticket)。
  2. 生成二维码供用户扫描。
  3. 不断查询二维码扫描状态。在用户扫描并确认登录后,获取响应头中所有Set-Cookie。可获取的Cookie有:Account ID、MiHoYo id、LToken(V2)、特定Cookie Token。

生成二维码

国服:

请求方式:POST

需要验证请求头

x-rpc-app_idbll8iq97cem8

x-rpc-device_id

https://passport-api.miyoushe.com/account/ma-cn-passport/web/createQRLogin

JSON 返回:

根对象:

字段类型内容备注
retcodenum返回码-3001 请求头缺少部分参数
messagestr返回消息
dataobj二维码指向的 URL

data对象:

字段类型内容备注
urlstr二维码指向的URL经过Unicode转义
ticketstr查询扫码状态的参数
查看示例
{
  "retcode": 0,
  "message": "OK",
  "data": {
    "url": "https://user.mihoyo.com/login-platform/mobile.html?expire=1693555708\u0026tk=e8a6448c-6596-461c-884a-98fe84bd675b\u0026token_types=4#/login/qr",
    "ticket": "e8a6448c-6596-461c-884a-98fe84bd675b"
  }
}

查询二维码扫描状态

国服:

请求方式:POST

需要验证请求头

x-rpc-app_idbll8iq97cem8

x-rpc-device_id

https://passport-api.miyoushe.com/account/ma-cn-passport/web/queryQRLoginStatus

JSON请求:

字段类型内容备注
ticketstr生成二维码时,返回数据中ticket字段的值

JSON返回:

根对象:

字段类型内容备注
retcodenum返回码
-3001 请求头缺少参数
-3501 二维码已过期
-3505 用户取消扫码
messagestr返回消息
dataobj二维码状态

data对象:

字段类型内容备注
app_idstr请求时的app_id参数
client_typenum客户端类型
created_atstr创建时间戳
need_realpersonbool
realname_infoobj确认登录之前为空
scanned_atstr扫码时间戳扫描之前为空
statusstr二维码状态
Created 未扫描
Scanned 已扫描
Confirmed 已确认
tokensarr总是为空
user_infoobj登录用户的信息确认登录之前为空
查看示例
// 未扫描
{
  "retcode": 0,
  "message": "OK",
  "data": {
    "status": "Created",
    "app_id": "bll8iq97cem8",
    "client_type": 4,
    "created_at": "1693555708",
    "scanned_at": "0",
    "tokens": [],
    "user_info": null,
    "realname_info": null,
    "need_realperson": false
  }
}

// 已扫描
{
  "retcode": 0,
  "message": "OK",
  "data": {
    "status": "Scanned",
    "app_id": "bll8iq97cem8",
    "client_type": 4,
    "created_at": "1693555708",
    "scanned_at": "1693555708",
    "tokens": [],
    "user_info": null,
    "realname_info": null,
    "need_realperson": false
  }
}

// 已过期
{
  "data": null,
  "message": "二维码已失效,请刷新后重新扫描",
  "retcode": -3501
}

//取消扫码
{
  "data": null,
  "message": "扫码登录已取消,重新生成二维码",
  "retcode": -3505
}

// 已确认
{
  "retcode": 0,
  "message": "OK",
  "data": {
    "status": "Confirmed",
    "app_id": "bll8iq97cem8",
    "client_type": 4,
    "created_at": "1693555708",
    "scanned_at": "1693555708",
    "tokens": [],
    "user_info": {"aid":"xxxx","mid":"xxxx".....},
    "realname_info": {
      "required": false,
      "action_type": "",
      "action_ticket": ""
    },
    "need_realperson": false
  }
}