uniapp-app/README_API.md
2025-08-15 17:50:07 +08:00

165 lines
3.3 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.

# 短信登录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存储和用户信息保存