165 lines
3.3 KiB
Markdown
165 lines
3.3 KiB
Markdown
# 短信登录API接口说明
|
||
|
||
## 接口概述
|
||
本文档描述了短信验证码登录相关的API接口,包括获取验证码和短信登录功能。
|
||
|
||
## 基础配置
|
||
- 开发环境: `https://dev-app.igandan.com`
|
||
- 生产环境: `https://app.igandan.com`
|
||
- 请求头: `Authorization: Bearer {token}` (登录接口不需要)
|
||
|
||
## API接口列表
|
||
|
||
### 1. 获取短信验证码
|
||
**接口地址:** `/expertAPI/getSmsCode`
|
||
**请求方法:** `POST`
|
||
**请求参数:**
|
||
```json
|
||
{
|
||
"phone": "13800138000"
|
||
}
|
||
```
|
||
|
||
**响应格式:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "验证码发送成功",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"code": 400,
|
||
"message": "手机号格式错误",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
### 2. 短信验证码登录
|
||
**接口地址:** `/expertAPI/umSmsLogin`
|
||
**请求方法:** `POST`
|
||
**请求参数:**
|
||
```json
|
||
{
|
||
"phone": "13800138000",
|
||
"code": "123456"
|
||
}
|
||
```
|
||
|
||
**响应格式:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "登录成功",
|
||
"data": {
|
||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||
"userInfo": {
|
||
"userId": "12345",
|
||
"phone": "13800138000",
|
||
"nickname": "用户昵称",
|
||
"avatar": "头像URL"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误响应:**
|
||
```json
|
||
{
|
||
"code": 400,
|
||
"message": "验证码错误",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
## 使用流程
|
||
|
||
### 1. 获取验证码
|
||
1. 用户输入手机号
|
||
2. 点击"获取验证码"按钮
|
||
3. 前端验证手机号格式
|
||
4. 调用获取验证码API
|
||
5. 开始60秒倒计时
|
||
|
||
### 2. 短信登录
|
||
1. 用户输入手机号和验证码
|
||
2. 点击"登录"按钮
|
||
3. 前端验证输入内容
|
||
4. 调用短信登录API
|
||
5. 保存token和用户信息
|
||
6. 跳转到首页
|
||
|
||
## 前端实现要点
|
||
|
||
### 验证码倒计时
|
||
```javascript
|
||
// 开始倒计时
|
||
isCountingDown.value = true;
|
||
countdown.value = 60;
|
||
|
||
const timer = setInterval(() => {
|
||
countdown.value--;
|
||
if (countdown.value <= 0) {
|
||
clearInterval(timer);
|
||
isCountingDown.value = false;
|
||
}
|
||
}, 1000);
|
||
```
|
||
|
||
### 登录状态管理
|
||
```javascript
|
||
// 保存认证信息
|
||
if (result.data.data && result.data.data.token) {
|
||
uni.setStorageSync('AUTH_TOKEN_App', result.data.data.token);
|
||
if (result.data.data.userInfo) {
|
||
uni.setStorageSync('USER_INFO', result.data.data.userInfo);
|
||
}
|
||
}
|
||
```
|
||
|
||
### 错误处理
|
||
```javascript
|
||
try {
|
||
const result = await api.smsLogin({
|
||
phone: phoneNumber.value,
|
||
code: smsCode.value
|
||
});
|
||
|
||
if (result.data.code === 200) {
|
||
// 登录成功处理
|
||
} else {
|
||
// 显示错误信息
|
||
uni.showToast({
|
||
title: result.data.message || '登录失败',
|
||
icon: 'none'
|
||
});
|
||
}
|
||
} catch (error) {
|
||
// 网络错误处理
|
||
uni.showToast({
|
||
title: '登录失败,请重试',
|
||
icon: 'none'
|
||
});
|
||
}
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **手机号验证**: 前端需要验证手机号格式(11位数字,以1开头)
|
||
2. **验证码长度**: 验证码通常为6位数字
|
||
3. **倒计时控制**: 防止用户频繁点击获取验证码
|
||
4. **协议同意**: 登录前必须同意用户协议
|
||
5. **错误提示**: 提供清晰的错误信息给用户
|
||
6. **安全考虑**: 验证码有效期限制,防止暴力破解
|
||
|
||
## 测试建议
|
||
|
||
1. 使用真实手机号测试验证码发送
|
||
2. 测试各种错误情况(错误验证码、过期验证码等)
|
||
3. 测试网络异常情况
|
||
4. 验证登录成功后的跳转逻辑
|
||
5. 测试token存储和用户信息保存
|