petsHero-AI/docs/user_login.md
2026-03-13 22:04:57 +08:00

125 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 用户登录流程
本文档基于 `docs/petsHeroAI_client_guide.md` 中的登录态接口,整理客户端登录顺序与数据处理要求。
---
## 1. 整体顺序
1. **设备快速登录**`POST /v1/user/fast_login`,拿到 `userToken` 和用户信息。
2. **保存登录态与用户信息**:保存 token、积分、userId、头像、昵称、国家码等**首次登录**记录为注册日期。
3. **归因上报**`POST /v1/user/referrer`,将归因数据(如从 Adjust 获取的 digest上报。
4. **获取用户通用信息**`GET /v1/user/common_info`,拉取通用配置并保存(含 `surge``lucky` 等)。
登录成功后,后续所有请求需在 Header 中携带 `knight`(即 `User_token` / userToken
---
## 2. 设备快速登录 `POST /v1/user/fast_login`
- **鉴权**需要Header 需带 `portal`,首次无 `knight` 可空或按文档处理)。
- **说明**:用设备 ID + 签名做设备登录,返回用户 token 及基础信息。
### 请求
| 位置 | 字段(映射后) | 说明 |
|--------|----------------|------|
| Query | portal | 应用包名(必填) |
| Query | crest | 渠道号(可选) |
| Query | accolade | 类型(可选) |
| Body | digest | 归因信息,如 utm_source=googleplay可与 Adjust 一致) |
| Body | resolution | 签名:**MD5(deviceId) 大写 32 位** |
| Body | origin | 设备 IDdeviceId |
### 响应(解密后 data / sidekick
| 字段(映射后) | 说明 |
|----------------|------|
| reevaluate | **userToken**,后续请求 Header 的 `knight` |
| asset | **userId**,用户 ID |
| reveal | **credit**,积分余额 |
| realm | 头像 URL |
| terminal | 用户名 |
| navigate | 国家代码 |
| surge | 客户端界面配置extConfigJSON 字符串,需按需解析 |
| equip | 是否首次注册firstRegister |
| 其他 | 见接口文档 sidekick 结构 |
### 客户端必做
- 保存并设置 **userToken**(如写入请求头 `knight`)。
- 保存并更新 **积分**reveal、**用户信息**userId、头像、昵称、国家码等
- **首次登录**:将该次登录日期记为**注册日期**(用于归因/统计);可本地标记“已注册”避免重复上报。
---
## 3. 归因上报 `POST /v1/user/referrer`
- **鉴权**需要Header 带 `portal``knight`)。
- **说明**:登录成功后调用,上报归因数据;**digest 从 Adjust 取**。
### 请求
| 位置 | 字段(映射后) | 说明 |
|--------|----------------|------|
| Query | sentinel | 应用标识(必填) |
| Query | asset | 用户 IDuserId |
| Query | accolade | 类型(可选),传 `android_adjust` |
| Query | portal | 应用包名(必填) |
| Body | digest | **归因信息,从 Adjust 获取** |
| Body | origin | 设备 IDdeviceId |
### 响应
- code=0 表示成功;可解析 msg / data 做提示或日志。
- **调用成功后建议增加日志输出**,便于排查归因是否上报成功。
---
## 4. 获取用户通用信息 `GET /v1/user/common_info`
- **鉴权**需要Header 带 `portal``knight`)。
- **说明**:登录成功后调用,拉取通用配置并**保存到全局/本地**。
### 请求
| 位置 | 字段(映射后) | 说明 |
|--------|----------------|------|
| Query | sentinel | 应用标识(必填) |
| Query | asset | 用户 IDuserId |
| Query | shield / crest / item / origin / gauntlet / portal | 按需传,见接口文档 |
### 响应(解密后 data / sidekick
- 与 fast_login 的 data 结构类似,含 **surge**extConfig、积分、用户信息等。
- **surge**:字符串,为 JSON**先 JSON 解析再使用**
- 解析后的对象中,包含 **lucky** 等字段,用于控制第三方支付等能力。
- 其他字段reveal、realm、terminal、navigate 等)按需保存到全局变量或状态。
### 客户端必做
- 调用 common_info 并将结果**保存到全局/状态**。
-**surge****JSON decode**,得到对象后读取并保存 **lucky** 等配置。
---
## 5. 流程小结
```
APP 启动
→ 获取 deviceId计算 sign = MD5(deviceId) 大写 32 位
→ 可选:从 Adjust 获取归因 digest
→ POST /v1/user/fast_loginbody: digest, resolution, originquery: portal, crest, accolade
→ 若成功:
1. 保存 userTokenknight、userIdasset、积分reveal、头像/昵称/国家码等
2. 若首次登录:记录注册日期并标记已注册
3. POST /v1/user/referrerbody: digest 从 Adjust 取, originquery: sentinel, asset, portal
→ 成功后打日志
4. GET /v1/user/common_infoquery: sentinel, asset
→ 将结果保存到全局
→ 对 data.surge 做 JSON decode保存 lucky 等
→ 之后所有请求 Header 带 knight = userToken
```
接口的 V2 请求体/响应体、加解密与字段映射以 **petsHeroAI_client_guide.md** 为准。