登录接口文档.md 31 KB

移动端登录认证接口文档

模块名称:business-mobile-gateway
版本:3.0.1
更新日期:2026-02-05
基础路径/mobile/member/auth
适用端:APP、小程序、H5


一、接口规范

1.1 URL 格式规范

/mobile/member/auth/{操作}

说明

  • 固定前缀/mobile(移动端接口统一前缀)
  • 模块名member(会员模块)
  • 类名auth(认证相关)
  • 操作:接口操作,如 loginByMobilesendSmsCode

1.2 请求规范

项目 规范
Content-Type application/json;charset=UTF-8
Authorization Bearer {token}(登录后必传,登录接口不需要)
X-Device-Id 设备唯一标识(建议传递)
X-Platform 平台标识:APPMINIH5
X-Version 客户端版本号

1.3 响应格式

{
    "code": 200,
    "msg": "success",
    "data": {},
    "requestId": "链路追踪ID"
}

1.4 状态码说明

状态码 说明
200 成功
400 参数错误
401 未登录/Token过期
403 无权限
404 资源不存在
500 服务器错误
1001 验证码错误
1002 验证码已过期
1003 账号已被禁用
1004 账号不存在
1005 密码错误

二、验证码接口

2.1 发送短信验证码

接口地址POST /mobile/member/auth/sendSmsCode

请求参数

{
    "mobile": "13812345678",
    "scene": "LOGIN"
}
参数 类型 必填 说明
mobile String 手机号(格式:1[3-9]开头的11位数字)
scene String 场景:LOGIN-登录、REGISTER-注册、RESET_PWD-重置密码、BIND-绑定手机

响应示例

{
    "code": 200,
    "msg": "验证码已发送",
    "data": {
        "expireSeconds": 300
    },
    "requestId": "abc123"
}

说明

  • 验证码有效期:5分钟(300秒)
  • 同一手机号同一场景下,60秒内只能发送一次
  • 验证码为6位数字

2.2 发送邮件验证码

接口地址POST /mobile/member/auth/sendEmailCode

请求参数

{
    "email": "user@example.com",
    "scene": "LOGIN"
}
参数 类型 必填 说明
email String 邮箱地址
scene String 场景:LOGIN-登录、REGISTER-注册、RESET_PWD-重置密码、BIND-绑定邮箱

响应示例

{
    "code": 200,
    "msg": "验证码已发送",
    "data": {
        "expireSeconds": 300
    },
    "requestId": "abc123"
}

三、登录方式

3.1 手机验证码登录

接口地址POST /mobile/member/auth/loginByMobile

请求参数

{
    "mobile": "13812345678",
    "smsCode": "123456",
    "inviteCode": "ABC123",
    "deviceId": "device_xxx",
    "platform": "APP"
}
参数 类型 必填 说明
mobile String 手机号(格式:1[3-9]开头的11位数字)
smsCode String 短信验证码(6位数字)
inviteCode String 邀请码(新用户首次登录时可传)
deviceId String 设备ID
platform String 平台:APPMINIH5

响应示例

{
    "code": 200,
    "msg": "登录成功",
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "tokenType": "Bearer",
        "expiresIn": 604800,
        "refreshToken": "refresh_token_xxx",
        "isNewUser": false,
        "needBindMobile": false,
        "memberId": "1234567890",
        "memberNo": "M202601240001",
        "nickname": "用户昵称",
        "avatar": "https://xxx.com/avatar.jpg",
        "mobile": "138****5678"
    },
    "requestId": "abc123"
}

说明

  • 如果手机号未注册,系统会自动创建账号并登录
  • isNewUsertrue 表示新用户,false 表示老用户
  • needBindMobile:是否需要绑定手机号(第三方登录时可能为 true

3.2 账号密码登录

接口地址POST /mobile/member/auth/loginByPassword

请求参数

{
    "account": "13812345678",
    "password": "加密后的密码",
    "deviceId": "device_xxx",
    "platform": "APP"
}
参数 类型 必填 说明
account String 账号(手机号/邮箱)
password String 密码(RSA加密后的密文,需先调用 /mobile/member/auth/publicKey 获取公钥)
deviceId String 设备ID
platform String 平台:APPMINIH5

响应示例:同 3.1

说明

  • 密码必须使用 RSA 公钥加密后传输
  • 获取公钥接口:GET /mobile/member/auth/publicKey
  • 账号支持手机号或邮箱

3.3 账号密码注册

接口地址POST /mobile/member/auth/registerByPassword

请求参数

{
    "account": "13812345678",
    "password": "加密后的密码",
    "inviteCode": "INVITE123",
    "deviceId": "device_xxx",
    "platform": "APP"
}
参数 类型 必填 说明
account String 账号(手机号/邮箱)
password String 密码(RSA加密后的密文)
inviteCode String 邀请码
deviceId String 设备ID
platform String 平台:APPMINIH5

响应示例

{
    "code": 200,
    "msg": "注册成功",
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "tokenType": "Bearer",
        "expiresIn": 604800,
        "refreshToken": "refresh_token_xxx",
        "isNewUser": true,
        "needBindMobile": false,
        "memberId": "1234567890",
        "memberNo": "M202601240001",
        "nickname": "用户昵称",
        "avatar": "https://xxx.com/avatar.jpg",
        "mobile": "138****5678"
    },
    "requestId": "abc123"
}

3.4 微信小程序登录

接口地址POST /mobile/member/auth/loginByWechatMini

请求参数

{
    "code": "wx_code_xxx",
    "encryptedData": "加密数据",
    "iv": "初始向量",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
code String 微信登录code(通过 wx.login() 获取)
encryptedData String 加密用户数据(获取手机号时需要)
iv String 加密初始向量(获取手机号时需要)
inviteCode String 邀请码

响应示例:同 3.1

说明

  • 首次登录时,isNewUsertrue
  • 如果未绑定手机号,needBindMobiletrue,需要调用绑定手机号接口

3.5 微信APP登录

接口地址POST /mobile/member/auth/loginByWechatApp

请求参数

{
    "code": "wx_oauth_code",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
code String 微信OAuth授权code
inviteCode String 邀请码

响应示例:同 3.1


3.6 微信公众号登录

接口地址POST /mobile/member/auth/loginByWechatMp

请求参数

{
    "code": "wx_oauth_code",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
code String 微信网页授权code
inviteCode String 邀请码

响应示例:同 3.1


3.7 支付宝登录

接口地址POST /mobile/member/auth/loginByAlipay

请求参数

{
    "authCode": "alipay_auth_code",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
authCode String 支付宝授权码
inviteCode String 邀请码

响应示例:同 3.1


3.8 苹果登录

接口地址POST /mobile/member/auth/loginByApple

请求参数

{
    "identityToken": "apple_identity_token",
    "authorizationCode": "apple_authorization_code",
    "fullName": {
        "familyName": "张",
        "givenName": "三"
    },
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
identityToken String Apple Identity Token
authorizationCode String Apple Authorization Code
fullName Object 用户姓名(首次授权时返回)
fullName.familyName String
fullName.givenName String
inviteCode String 邀请码

响应示例:同 3.1

说明

  • 仅 iOS 平台支持
  • fullName 仅在首次授权时返回,后续登录不会返回

3.9 华为账号登录

接口地址POST /mobile/member/auth/loginByHuawei

请求参数

{
    "authCode": "huawei_auth_code",
    "openId": "huawei_openid",
    "accessToken": "huawei_access_token",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
authCode String 华为授权码
openId String 华为OpenID
accessToken String 华为AccessToken
inviteCode String 邀请码

响应示例:同 3.1


3.10 QQ登录

接口地址POST /mobile/member/auth/loginByQQ

请求参数

{
    "authCode": "qq_auth_code",
    "openId": "qq_openid",
    "accessToken": "qq_access_token",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
authCode String QQ授权码
openId String QQ OpenID
accessToken String QQ AccessToken
inviteCode String 邀请码

响应示例:同 3.1


3.11 微博登录

接口地址POST /mobile/member/auth/loginByWeibo

请求参数

{
    "authCode": "weibo_auth_code",
    "uid": "weibo_uid",
    "accessToken": "weibo_access_token",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
authCode String 微博授权码
uid String 微博UID(微博特有)
accessToken String 微博AccessToken
inviteCode String 邀请码

响应示例:同 3.1


3.12 抖音登录

接口地址POST /mobile/member/auth/loginByDouyin

请求参数

{
    "authCode": "douyin_auth_code",
    "openId": "douyin_openid",
    "accessToken": "douyin_access_token",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
authCode String 抖音授权码
openId String 抖音OpenID
accessToken String 抖音AccessToken
inviteCode String 邀请码

响应示例:同 3.1


3.13 一键登录(本机号码)

接口地址POST /mobile/member/auth/loginByOneClick

请求参数

{
    "token": "operator_token",
    "operator": "CMCC",
    "inviteCode": "ABC123"
}
参数 类型 必填 说明
token String 运营商返回的token(移动/联通/电信)
operator String 运营商:CMCC-移动、CUCC-联通、CTCC-电信
inviteCode String 邀请码

响应示例:同 3.1

说明

  • 一键登录需要集成运营商SDK(移动、联通、电信)
  • 用户无需输入手机号和验证码,直接使用本机号码登录
  • 如果本机号码未注册,系统会自动创建账号

3.14 二维码登录

二维码登录是一种便捷的登录方式,用户可以通过移动 App 扫描网页上的二维码完成登录。

3.14.1 生成二维码登录Token

接口地址POST /mobile/member/auth/qrLogin/generate

请求参数:无

响应示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "token": "qr_1707123456789_abc123xyz",
        "expireTime": 300
    },
    "requestId": "abc123"
}
字段 类型 说明
token String 二维码Token(用于生成二维码)
expireTime Long 二维码过期时间(秒),默认 10 分钟(600秒)

说明

  • Token 格式:qr_{timestamp}_{randomString}
  • Token 有效期:10分钟(600秒)
  • 前端需要使用此 Token 生成二维码图片

3.14.2 检查二维码登录状态

接口地址GET /mobile/member/auth/qrLogin/check?token={token}

请求参数

参数 类型 必填 说明
token String 二维码Token(URL参数)

响应示例

状态:pending(等待扫码)

{
    "code": 200,
    "msg": "success",
    "data": {
        "status": "pending"
    },
    "requestId": "abc123"
}

状态:scanned(已扫码,等待确认)

{
    "code": 200,
    "msg": "success",
    "data": {
        "status": "scanned"
    },
    "requestId": "abc123"
}

状态:confirmed(已确认登录)

{
    "code": 200,
    "msg": "success",
    "data": {
        "status": "confirmed",
        "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "refreshToken": "refresh_token_xxx",
        "memberInfo": {
            "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
            "tokenType": "Bearer",
            "expiresIn": 604800,
            "refreshToken": "refresh_token_xxx",
            "isNewUser": false,
            "needBindMobile": false,
            "memberId": "1234567890",
            "memberNo": "M202601240001",
            "nickname": "用户昵称",
            "avatar": "https://xxx.com/avatar.jpg",
            "mobile": "138****5678"
        }
    },
    "requestId": "abc123"
}

状态:expired(已过期)

{
    "code": 200,
    "msg": "success",
    "data": {
        "status": "expired"
    },
    "requestId": "abc123"
}
字段 类型 说明
status String 状态:pending-等待扫码、scanned-已扫码、confirmed-已确认、expired-已过期
accessToken String 登录Token(当status为confirmed时返回)
refreshToken String 刷新Token(当status为confirmed时返回)
memberInfo Object 会员信息(当status为confirmed时返回),结构同 LoginResultVO

说明

  • 前端需要轮询调用此接口检查登录状态(建议每2秒轮询一次)
  • 当状态为 confirmed 时,表示登录成功,可以获取 Token 和会员信息
  • 当状态为 expired 时,需要重新生成二维码
  • 二维码有效期:10分钟(600秒),过期后需要重新生成

3.14.3 确认二维码登录

接口地址POST /mobile/member/auth/qrLogin/confirm

请求头:需要传递 Authorization: Bearer {token}(移动端已登录的Token)

请求参数

{
    "token": "qr_1707123456789_abc123xyz"
}
参数 类型 必填 说明
token String 二维码Token

响应示例

{
    "code": 200,
    "msg": "登录成功",
    "data": null,
    "requestId": "abc123"
}

说明

  • 此接口由移动端 App 调用(扫码后确认登录)
  • 移动端需要先登录(传递已登录的Token)
  • 调用成功后,网页端轮询检查状态时会返回 confirmed 状态和登录信息

三、扫码登录流程说明

3.15 扫码登录完整流程

扫码登录是一种便捷的跨端登录方式,允许用户通过移动 App 扫描网页上的二维码完成登录。

3.15.1 流程图

网页端(前端)                   后端API                    移动端(App)
    |                              |                            |
    |--1. 生成二维码Token--------->|                            |
    |<--返回Token和过期时间--------|                            |
    |                              |                            |
    |--2. 生成二维码图片(使用Token)|                            |
    |                              |                            |
    |--3. 轮询检查状态(每2秒)---->|                            |
    |<--返回status: pending--------|                            |
    |                              |                            |
    |                              |<--4. 用户扫码(解析Token)--|
    |                              |                            |
    |                              |<--5. 确认登录(带Token)----|
    |                              |--更新状态为scanned--------->|
    |                              |                            |
    |--6. 轮询检查状态------------->|                            |
    |<--返回status: scanned--------|                            |
    |                              |                            |
    |                              |<--7. 用户点击确认登录--------|
    |                              |--调用confirmQrLogin-------->|
    |                              |--更新状态为confirmed------->|
    |                              |                            |
    |--8. 轮询检查状态------------->|                            |
    |<--返回status: confirmed------|                            |
    |<--返回Token和会员信息--------|                            |
    |                              |                            |
    |--9. 保存Token,完成登录------|                            |

3.15.2 详细步骤

步骤1:网页端生成二维码

  1. 网页端调用 POST /mobile/member/auth/qrLogin/generate 生成二维码Token
  2. 使用返回的 token 生成二维码图片
  3. 二维码内容格式:qrlogin://token={token}&url={当前页面URL}
    • 示例:qrlogin://token=qr_1707123456789_abc123xyz&url=https://example.com/login

步骤2:网页端轮询检查状态

  1. 网页端每2秒调用一次 GET /mobile/member/auth/qrLogin/check?token={token} 检查状态
  2. 初始状态为 pending(等待扫码)
  3. 如果超过10分钟未扫码或未确认,状态变为 expired,需要重新生成二维码

步骤3:移动端扫码

  1. 用户打开移动 App,使用扫码功能扫描网页上的二维码
  2. App 解析二维码内容,提取 token 参数
  3. App 可以调用 GET /mobile/member/auth/qrLogin/check?token={token} 检查二维码状态
  4. 如果状态为 pending,App 显示"确认登录"按钮

步骤4:移动端确认登录

  1. 用户在 App 中点击"确认登录"按钮
  2. App 调用 POST /mobile/member/auth/qrLogin/confirm,传递二维码Token
  3. 注意:App 需要先登录(传递已登录的Token),才能调用确认接口
  4. 后端更新二维码状态为 scanned,然后立即更新为 confirmed,并存储登录信息

步骤5:网页端获取登录信息

  1. 网页端轮询检测到状态变为 confirmed
  2. 从响应中获取 accessTokenrefreshTokenmemberInfo
  3. 保存 Token 到本地存储(localStorage)
  4. 跳转到首页,完成登录

3.15.3 状态流转

pending(等待扫码)
    ↓
scanned(已扫码,等待确认)
    ↓
confirmed(已确认登录)
    ↓
expired(已过期,需要重新生成)

3.15.4 注意事项

  1. 二维码过期时间:10分钟(600秒),过期后需要重新生成
  2. 轮询频率:建议每2秒轮询一次,避免过于频繁
  3. 移动端登录要求:移动端调用确认接口前,需要先登录(传递已登录的Token)
  4. 安全性:Token 具有唯一性和时效性,确保安全性
  5. 错误处理
    • 如果二维码过期,前端应提示用户刷新二维码
    • 如果移动端未登录,应提示用户先登录 App
    • 如果确认失败,应提示用户重试

3.15.5 前端实现示例

生成二维码

// 1. 调用生成Token接口
const res = await generateQrLoginToken()
const token = res.data.token

// 2. 生成二维码图片
const qrContent = `qrlogin://token=${token}&url=${window.location.origin}`
const qrCodeUrl = await QRCode.toDataURL(qrContent)

// 3. 开始轮询检查状态
const timer = setInterval(async () => {
  const statusRes = await checkQrLoginStatus(token)
  const status = statusRes.data.status
  
  if (status === 'confirmed') {
    // 登录成功,保存Token
    localStorage.setItem('access_token', statusRes.data.accessToken)
    localStorage.setItem('memberInfo', JSON.stringify(statusRes.data.memberInfo))
    clearInterval(timer)
    // 跳转到首页
    router.push('/')
  } else if (status === 'expired') {
    // 二维码过期,提示刷新
    clearInterval(timer)
    alert('二维码已过期,请刷新')
  }
}, 2000) // 每2秒轮询一次

移动端扫码确认

// 1. 解析二维码内容
const qrContent = 'qrlogin://token=qr_xxx&url=xxx'
const token = extractTokenFromQr(qrContent) // 提取token参数

// 2. 检查二维码状态
const statusRes = await checkQrLoginStatus(token)
if (statusRes.data.status === 'pending') {
  // 显示确认登录按钮
  showConfirmButton()
}

// 3. 用户点击确认后调用确认接口
async function confirmLogin() {
  await confirmQrLogin(token) // 需要传递已登录的Token
  // 确认成功,网页端会通过轮询获取登录信息
}

四、Token管理

4.1 刷新Token

接口地址POST /mobile/member/userCenter/refreshToken

请求头:需要传递 Authorization: Bearer {token}

请求参数

{
    "refreshToken": "refresh_token_xxx"
}
参数 类型 必填 说明
refreshToken String 刷新令牌(登录时返回的 refreshToken)

响应示例

{
    "code": 200,
    "msg": "刷新成功",
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "tokenType": "Bearer",
        "expiresIn": 604800,
        "refreshToken": "new_refresh_token_xxx",
        "memberId": "1234567890",
        "memberNo": "M202601240001",
        "nickname": "用户昵称",
        "avatar": "https://xxx.com/avatar.jpg",
        "mobile": "138****5678"
    },
    "requestId": "abc123"
}

说明

  • Token 过期前可以调用此接口刷新
  • 刷新后会返回新的 token 和 refreshToken

4.2 退出登录

接口地址POST /mobile/member/userCenter/logout

请求头:需要传递 Authorization: Bearer {token}

请求参数:无

响应示例

{
    "code": 200,
    "msg": "退出成功",
    "data": null,
    "requestId": "abc123"
}

说明

  • 退出登录后,当前 token 立即失效
  • 需要重新登录才能访问需要认证的接口

五、账号管理

5.1 绑定手机号

接口地址POST /mobile/member/auth/bindMobile

请求头:需要传递 Authorization: Bearer {token}

请求参数

{
    "mobile": "13812345678",
    "smsCode": "123456"
}
参数 类型 必填 说明
mobile String 手机号
smsCode String 短信验证码(场景需为 BIND

响应示例

{
    "code": 200,
    "msg": "绑定成功",
    "data": {
        "mobile": "138****5678"
    },
    "requestId": "abc123"
}

说明

  • 绑定前需要先调用发送短信验证码接口(scene 为 BIND
  • 一个手机号只能绑定一个账号

5.2 修改密码

接口地址POST /mobile/member/userCenter/changePassword

请求头:需要传递 Authorization: Bearer {token}

请求参数

{
    "oldPassword": "旧密码(RSA加密)",
    "newPassword": "新密码(RSA加密)"
}
参数 类型 必填 说明
oldPassword String 旧密码(RSA加密后的密文)
newPassword String 新密码(RSA加密后的密文)

响应示例

{
    "code": 200,
    "msg": "密码修改成功",
    "data": null,
    "requestId": "abc123"
}

5.3 重置密码(忘记密码)

接口地址POST /mobile/member/auth/resetPassword

请求参数

{
    "account": "13812345678",
    "smsCode": "123456",
    "newPassword": "新密码(RSA加密)"
}
参数 类型 必填 说明
account String 账号(手机号/邮箱)
smsCode String 验证码(场景需为 RESET_PWD
newPassword String 新密码(RSA加密后的密文)

响应示例

{
    "code": 200,
    "msg": "密码重置成功",
    "data": null,
    "requestId": "abc123"
}

说明

  • 重置前需要先调用发送验证码接口(scene 为 RESET_PWD
  • 如果账号是邮箱,则使用邮件验证码

5.4 注销账号

接口地址POST /mobile/member/userCenter/cancel

请求头:需要传递 Authorization: Bearer {token}

请求参数

{
    "reason": "注销原因",
    "password": "密码(RSA加密)"
}
参数 类型 必填 说明
reason String 注销原因
password String 密码(RSA加密后的密文,用于验证身份)

响应示例

{
    "code": 200,
    "msg": "账号已注销",
    "data": null,
    "requestId": "abc123"
}

说明

  • 账号注销后,所有数据将被删除或匿名化处理
  • 注销操作不可恢复,请谨慎操作

六、工具接口

6.1 获取加密公钥

接口地址GET /mobile/member/auth/publicKey

请求参数:无

响应示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
    },
    "requestId": "abc123"
}

说明

  • 用于获取 RSA 公钥,用于加密密码
  • 密码传输前必须使用此公钥加密
  • 公钥可能会定期更换,建议每次登录前获取

七、登录响应字段说明

7.1 LoginResultVO 字段说明

字段 类型 说明
token String 访问令牌(用于后续接口认证)
tokenType String 令牌类型,固定为 Bearer
expiresIn Long 过期时间(秒),默认 7 天(604800秒)
refreshToken String 刷新令牌(用于刷新 token)
isNewUser Boolean 是否新用户:true-新用户,false-老用户
needBindMobile Boolean 是否需要绑定手机号:true-需要绑定,false-不需要
memberId String 会员ID
memberNo String 会员编号
nickname String 昵称
avatar String 头像URL
mobile String 手机号(脱敏显示,如:138****5678
openid String OpenID(第三方登录时返回)

八、接口地址速查表

接口 方法 URL 说明
发送短信验证码 POST /mobile/member/auth/sendSmsCode 发送短信验证码
发送邮件验证码 POST /mobile/member/auth/sendEmailCode 发送邮件验证码
手机验证码登录 POST /mobile/member/auth/loginByMobile 手机验证码登录
账号密码登录 POST /mobile/member/auth/loginByPassword 账号密码登录
账号密码注册 POST /mobile/member/auth/registerByPassword 账号密码注册
微信小程序登录 POST /mobile/member/auth/loginByWechatMini 微信小程序登录
微信APP登录 POST /mobile/member/auth/loginByWechatApp 微信APP登录
微信公众号登录 POST /mobile/member/auth/loginByWechatMp 微信公众号登录
支付宝登录 POST /mobile/member/auth/loginByAlipay 支付宝登录
苹果登录 POST /mobile/member/auth/loginByApple 苹果登录(iOS)
华为账号登录 POST /mobile/member/auth/loginByHuawei 华为账号登录
QQ登录 POST /mobile/member/auth/loginByQQ QQ登录
微博登录 POST /mobile/member/auth/loginByWeibo 微博登录
抖音登录 POST /mobile/member/auth/loginByDouyin 抖音登录
一键登录 POST /mobile/member/auth/loginByOneClick 一键登录(本机号码)
生成二维码Token POST /mobile/member/auth/qrLogin/generate 生成二维码登录Token
检查二维码状态 GET /mobile/member/auth/qrLogin/check?token={token} 检查二维码登录状态
确认二维码登录 POST /mobile/member/auth/qrLogin/confirm 确认二维码登录(移动端调用)
刷新Token POST /mobile/member/userCenter/refreshToken 刷新访问令牌
退出登录 POST /mobile/member/userCenter/logout 退出登录
绑定手机号 POST /mobile/member/auth/bindMobile 绑定手机号
修改密码 POST /mobile/member/userCenter/changePassword 修改密码
重置密码 POST /mobile/member/auth/resetPassword 重置密码(忘记密码)
注销账号 POST /mobile/member/userCenter/cancel 注销账号
获取公钥 GET /mobile/member/auth/publicKey 获取RSA加密公钥

九、常见问题

9.1 密码加密流程

  1. 调用 GET /mobile/member/auth/publicKey 获取 RSA 公钥
  2. 使用公钥在客户端加密密码
  3. 将加密后的密码传递给登录/注册接口

9.2 验证码使用流程

  1. 调用发送验证码接口(sendSmsCodesendEmailCode
  2. 用户输入收到的验证码
  3. 调用登录/注册/重置密码等接口,传递验证码

9.3 第三方登录流程

  1. 客户端调用第三方SDK获取授权码
  2. 将授权码传递给对应的登录接口
  3. 如果是新用户,系统自动创建账号
  4. 如果未绑定手机号,needBindMobiletrue,需要调用绑定手机号接口

9.4 Token 使用说明

  • Token 有效期:7天(604800秒)
  • Token 过期前可以调用 refreshToken 接口刷新
  • 所有需要认证的接口都需要在请求头中传递 Authorization: Bearer {token}
  • Token 过期后需要重新登录

十、更新日志

v3.0.3(2026-03-19)

  • 下线无服务端验证码校验的 AGC 同步登录接口:loginByEmailAgcloginByMobileAgc(易被伪造身份);请使用 loginByMobile / loginByEmail 并校验短信或邮箱验证码
  • 下线 encryptPassword 调试接口(明文密码上传存在泄露风险);客户端请使用 publicKey 在本地 RSA 加密后再调用登录/注册

v3.0.2(2026-03-14)

  • 新增二维码登录功能
  • 支持网页端通过二维码扫码登录
  • 新增三个二维码登录接口:生成Token、检查状态、确认登录
  • 完善扫码登录流程说明和实现示例

v3.0.1(2026-02-05)

  • 初始版本
  • 支持多种登录方式(手机验证码、账号密码、第三方登录等)
  • 支持 Token 刷新和退出登录
  • 支持账号管理(绑定手机号、修改密码、重置密码、注销账号)

文档版本:3.0.2
最后更新:2026-03-14
维护者:项目团队
用途:移动端登录认证接口文档