① 注册登录
还原现金贷原生 App(roovault) 注册登录的前后端交互。当前快照:登录统一经 blc-service
user/模块,token 机制(非 TGT/ST)。分支见下方「分支清单」。
概述
| 项 | 内容 |
|---|---|
| 起点 | App 启动 / 进入登录页 |
| 终点 | 拿到 token,路由到进件或首页 |
| 发起端 | 原生(LoginPrimeActivity / LoginOtpActivity / LoginFaceDialog) |
| 后端 | blc-service(user/、apply/、query/、tudcAux/) |
| 票据 | token(登录成功返回,后续请求带 token header);当前快照无 TGT/ST |
时序图
sequenceDiagram autonumber actor U as 用户 participant APP as 原生 App(roovault) participant SYS as 系统(SMS Retriever) participant FACE as 人脸 SDK(Smile/Google) participant BLC as blc-service Note over U,BLC: ① 启动 + 自动登录(当前禁用) U->>APP: 打开 App APP->>APP: AutoLoginComponent(实现体已注释,跳过) APP->>U: 展示登录页 Note over U,BLC: ② 登录入口(手机号) U->>APP: 输入手机号,获取验证码 APP->>BLC: user/login(手机号 + 设备信息) BLC-->>APP: loginType / nextLoginType + captchaConfig alt loginType 非空(直接成功) APP->>APP: completeSuccessfulLogin else nextLoginType = OTP Note over U,BLC: ③ 验证码登录(SMS 默认 / 语音) APP->>BLC: user/sendCaptcha(SMS, businessType) BLC-->>APP: captchaConfig(waitSeconds/resendSeconds) SYS-->>APP: SMS 自动读取(SMSRetriever) 或用户手输 opt 用户选语音 或 重发倒计时结束 APP->>BLC: user/sendCaptcha(VOICE 或 重发 SMS) end APP->>BLC: user/verifyCaptcha(手机号 + 验证码) alt 成功 BLC-->>APP: token + uid + stage else 失败 BLC-->>APP: onLoginActionError(errCode/errMsg) end else nextLoginType = FACE Note over U,BLC: ③ 人脸登录 APP->>U: LoginFaceDialog 引导 APP->>FACE: 活体检测(Smile/Google, FaceConfigBean) FACE-->>APP: 人脸数据 APP->>BLC: apply/faceDetection BLC-->>APP: 结果 + token end Note over U,BLC: ④ 登录成功后 APP->>APP: 存 token/uid/stage(本地加密 ACache) APP->>BLC: query/v1/loanAPPConfig(查流程开关) opt 新用户注册(ifReg) APP->>BLC: user/v1/updateChannelInfo4nc(渠道上报) end APP->>BLC: user/v1/bindFirebaseToken4nc(推送 token) APP->>APP: 权限检查 → CreditRouteUtil.startIdentity() APP->>U: 进入进件 或 首页
分支清单(穷举登录全部分支)
出处 LoginPrimeActivity / LoginOtpActivity(除注明)。
| # | 分支 | 触发条件 | 处理 | 接口/出处 | 状态 |
|---|---|---|---|---|---|
| 1 | 自动登录 | 启动 AUTO_LOGIN_ACTION | 实现体已注释,直接返回 success(禁用) | AutoLoginComponent:23 | 已展开(禁用) |
| 2 | 注册检查 | 输入手机号 | 查是否已注册 | tudcAux/user/exists | 已展开 |
| 3 | 登录-直接成功 | user/login 返回 loginType 非空 | completeSuccessfulLogin | LoginPrimeActivity:426 | 已展开 |
| 4 | 登录-OTP | nextLoginType=OTP | 跳 LoginOtpActivity(initSendOtp 决定是否自动发码) | :429 | 已展开 |
| 5 | 登录-人脸 | nextLoginType=FACE | LoginFaceDialog → 人脸 | :443 | 已展开 |
| 6 | OTP 通道-SMS | 默认 | sendOtp(SMS) | LoginOtpActivity:247 | 已展开 |
| 7 | OTP 通道-语音 | 用户点 Get Code By Voice | sendOtp(VOICE) | :122 | 已展开 |
| 8 | OTP 重发 | 倒计时结束(resendSeconds) | ReacquireCodeTimeCount 重发 | :237/239 | 已展开 |
| 9 | SMS 自动读取 | 收到 SMS | SMSRetriever 自动填充 | SMSRetrieverBroadcastReceiver | 已展开 |
| 10 | 验证码失败 | verifyCaptcha 失败 | onLoginActionError(errCode/errMsg) | :384/544 | 已展开 |
| 11 | 人脸渠道 | FaceConfigBean liveDetection | Smile / Google 人脸(视频压缩配置) | :504/517 | 已展开 |
| 12 | 定位采集 | 登录时 | 获取 GPS(失败 onLocationError) | :386 | 已展开(贯穿) |
| 13 | 设备信息上报 | 登录请求体 | 携带 IMEI/deviceId/mac/品牌/OS(风控) | LoginRequestBuilder | 已展开(贯穿) |
| 14 | 社交登录 | Google/FB/Twitter | 字段在、无调用(未启用) | LoginRequestBuilder:77 | 已展开(未启用) |
| 15 | 登录后-流程开关 | 登录成功 | query/v1/loanAPPConfig | QueryH5SwitchModel | 已展开 |
| 16 | 登录后-渠道上报 | ifReg=true(新户) | updateChannelInfo4nc | FreshChannelDataModel | 已展开 |
| 17 | 登录后-推送绑定 | 登录成功 | bindFirebaseToken4nc | BoundFirebasicModel | 已展开 |
| 18 | 登录后-路由 | 权限齐全/缺失 | startIdentity() / ShowAllPermissionActivity | CreditRouteUtil | 已展开 |
无 WhatsApp 登录通道:LoginConstant 仅定义
OTP_TYPE_SMS/OTP_TYPE_VOICE。12-前端现状提到的 WhatsApp 是 BVN 核验通道(authCodeFromWhatappsBvn,见 02-实名与进件),非登录 OTP。
接口落地
| 步骤 | 接口(真实路径) | 发起(原生类) | 目标后端 |
|---|---|---|---|
| 注册检查 | tudcAux/user/exists | IsRegisteredOtherPlatModel | blc-service |
| 登录入口 | user/login | LoginModel / LoginPresenter | blc-service |
| 发验证码 | user/sendCaptcha(SMS/语音) | SendOtpModel / LoginOTPPresenter | blc-service |
| 验码登录 | user/verifyCaptcha | LoginOtpActivity | blc-service |
| 人脸登录 | apply/faceDetection | LoginFaceDialog | blc-service |
| 登出 | user/logout | IOutLogin | blc-service |
| 流程开关 | query/v1/loanAPPConfig | QueryH5SwitchModel | blc-service |
| 渠道上报(新户) | user/v1/updateChannelInfo4nc | FreshChannelDataModel | blc-service |
| 推送绑定 | user/v1/bindFirebaseToken4nc | BoundFirebasicModel | blc-service |
要点与缺口
- 后端归属(快照差异):登录全走 blc-service
user/+ token;无独立 auth 服务、api/login/v1、TGT/ST(12 旧快照已不成立,tudcAux暗示 BFF 内部接 TUDC)。 - 登录方式:手机号 OTP(SMS/语音)+ 人脸登录(nextLoginType=FACE,Smile/Google);登录返回 loginType 非空可一步成功。
- 社交登录、自动登录当前未启用(字段/组件在但注释/无调用)。
- 设备信息 + 定位随登录上报(风控);设备行为采集是独立后台链路(见 02-实名与进件)。
- 衔接:登录成功 → token 落本地 → 权限 →
CreditRouteUtil.startIdentity()进入 02-实名与进件。