1. 登录
1.1 获取登录二维码
请求
- 方法:
POST - URL:
https://as.hypergryph.com/general/v1/gen_scan/login - 请求体:无
响应示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16{
"data": {
"scanId": "9c9f6b5462e***8d6fb4e48",
"scanUrl": "hypergryph://scan_login?scanId=9c9f6b5462e8df6e1d7912f8d6fb4e48",
"enableScanAppList": [
{
"appCode": "4ca99fa6b56cc2ba",
"name": "森空岛",
"iconUrl": "https://web.hycdn.cn/biz_toolset/upload/251225/qYm0f7X8LMaLkRRL.jpg"
}
]
},
"msg": "OK",
"status": 0,
"type": "A"
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
data.scanId | string | 二维码唯一标识 |
data.scanUrl | string | 二维码内容(生成二维码后,可用 enableScanAppList 中的应用扫码) |
data.enableScanAppList[] | array | 当前场景支持扫码登录的 APP 列表 |
data.enableScanAppList[].appCode | string | APP 唯一编码(后续用于区分服务) |
data.enableScanAppList[].name | string | APP 名称 |
data.enableScanAppList[].iconUrl | string | APP 图标 URL |
status | int | 状态码(0 成功,其余见错误说明) |
msg | string | 状态描述 |
type | string | 固定值 "A" |
1.2 查询扫码登录状态
请求
- 方法:
GET - URL:
https://as.hypergryph.com/general/v1/scan_status - 查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
scanId | string | 是 | 二维码 ID(从上一接口获取) |
响应说明
根据扫码状态返回不同结果:
状态 1:未扫码(status: 100)1
2
3
4
5{
"msg": "未扫码",
"status": 100,
"type": "A"
}
状态 2:已扫码,等待确认(status: 101)1
2
3
4
5{
"msg": "已扫码待确认",
"status": 101,
"type": "A"
}
状态 3:已登录(status: 0)1
2
3
4
5
6
7
8{
"data": {
"scanCode": "m5ZXjm4f24cdQtp1h4XryS*****************9K+OOZFBexhsfbBZkd9xsVJGJtRS8/BccJrsJ0dTnwNx/t9iks3plnp8xQPBqBwcnJJZQXzOfOUr9mJWU="
},
"msg": "OK",
"status": 0,
"type": "A"
}
| 字段 | 类型 | 说明 |
|---|---|---|
data.scanCode | string | 用于下一步换取登录凭据的临时凭证 |
注意:建议轮询此接口,直到返回
status: 0或超时。
1.3 通过 scanCode 获取凭据
请求
- 方法:
POST - URL:
https://as.hypergryph.com/user/auth/v1/token_by_scan_code - 请求头:
Content-Type: application/json - 请求体
1 | { |
请求字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
scanCode | string | 是 | 上一节获取到的 scanCode |
appCode | string | 是 | APP 编码(4ca99fa6b56cc2ba 为森空岛) |
响应示例1
2
3
4
5
6
7
8
9
10{
"data": {
"token": "WqL3wg*****************DhueR5eO",
"hgId": "1333*****6057",
"rememberLogin": true
},
"msg": "OK",
"status": 0,
"type": "A"
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
data.token | string | 短时效登录凭据(用于下一步授权) |
data.hgId | string | 鹰角网络通行证 ID |
data.rememberLogin | boolean | 是否记住登录(通常为 true) |
1.4 授权(获取最终 Access Token)
请求
- 方法:
POST - URL:
https://as.hypergryph.com/user/oauth2/v2/grant - 请求头:
Content-Type: application/json - 请求体
1 | { |
请求字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
token | string | 是 | 上一节获取到的短时效 token |
appCode | string | 是 | APP 编码 |
type | int | 是 | 授权类型(固定为 0) |
响应示例1
2
3
4
5
6
7
8
9
10{
"data": {
"uid": "1333*****6057",
"code": "Y0v+ZEgFW3mOHsAc7eCvLAu***OH28md9UsgmVSEs4VLqpnzQGt9v9kH8X1cm9lnj2gJ8nW+zniQnDYE6Rdsl5d***svKsELuh9FdF4D",
"token": "OYX/QyUna3JAcQHpGUDZzQaAYXO0gjQNE/kwkECl***W3dqGHHuumgLMPwuyRtVYT3rOt4Jd***rrJLo1BdfMFSbMnaoL7"
},
"msg": "OK",
"status": 0,
"type": "A"
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
data.uid | string | 用户 ID(与 hgId 相同) |
data.code | string | 授权码(可用于换取更高级别 token,本流程中通常不直接使用) |
data.token | string | 最终的 Access Token(后续调用用户信息等接口使用) |
2. 用户信息
请求
- 方法:
GET - URL:
https://as.hypergryph.com/user/info/v1/basic - 查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
token | string | 是 | 上一节授权接口返回的 token |
响应示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"data": {
"hgId": "1333*****6057",
"phone": "114*****5141",
"email": null,
"identityNum": "1919**********018",
"identityName": "孙**",
"nickName": null,
"isMinor": false,
"isLatestUserAgreement": true
},
"msg": "OK",
"status": 0,
"type": "A"
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
data.hgId | string | 鹰角网络通行证 ID |
data.phone | string | 绑定的手机号码(中间四位打码) |
data.email | string | 绑定的邮箱(通常为 null) |
data.identityNum | string | 身份证号码(部分打码) |
data.identityName | string | 真实姓名(姓氏显示,名字打码) |
data.nickName | string | 用户昵称(可能为 null) |
data.isMinor | boolean | 是否为未成年人 |
data.isLatestUserAgreement | boolean | 是否已同意最新用户协议 |