3.9 KiB
3.9 KiB
微信小程序登录接口文档
概述
- 接口用于微信小程序登录,前端通过
code换取openid/session_key,后端自动创建或更新t_user与t_platform_user。 - 成功后返回用户ID与平台用户ID,供前端后续业务使用。
基础信息
- 方法:
POST - 路径:
/api/open/wechat/mini/login - Content-Type:
application/json
请求头
Content-Type: application/jsonAuthorization: 不需要(已加入登录白名单)- 安全校验(当
security.enable: true时必须):X-App-Timestamp: 毫秒时间戳X-App-Sign: MD5(timestamp+secret_key)
请求参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 微信登录 wx.login 返回的 code |
| phoneCode | string | 否 | 快速手机号登录返回的 phoneCode(优先使用) |
| encryptedData | string | 否 | getPhoneNumber 返回的加密数据 |
| iv | string | 否 | getPhoneNumber 返回的解密向量 |
| nickname | string | 否 | 用户昵称 |
| avatarUrl | string | 否 | 用户头像URL |
| phone | string | 否 | 手机号(不传或空字符串将写入为 NULL) |
| gender | int | 否 | 性别:0-未知,1-男,2-女 |
| platformExtra | object | 否 | 平台扩展字段(如城市、语言等) |
请求示例
{
"code": "wx_login_code",
"phoneCode": "8064f569d035bf3a9b4c7fc223bbbc589bf442c0557e0ae51039031d883668f5",
"encryptedData": "EZyKBdrHgQoAjgMDPNGXRGOjsPrB8LHcupwFCztA3IBNvbdkrSsk6iU6FqQsrn5TfpMJeTzHJ2l7lg6e+EBqqDXVgVEgQxkTWlxBS6mwUN4NgRI2FanA0wPFAWMZGmn7jKgEJhu8xKGSihcI111Y/mq+3T6gDzjZvkz32MhngL5/wBEjDQbBdBXfvY6FveyV7CinM0j17wE7pbjNIFrExw==",
"iv": "DMzzMUAx5ke1S8nFItBHSg==",
"nickname": "张三",
"avatarUrl": "https://example.com/avatar.png",
"phone": "13800000000",
"gender": 1,
"platformExtra": {
"city": "Shenzhen",
"language": "zh_CN"
}
}
响应参数
| 字段 | 类型 | 说明 |
|---|---|---|
| userId | int64 | 用户ID(t_user.id) |
| platformUserId | int64 | 平台用户ID(t_platform_user.id) |
| openid | string | 微信 openid |
| unionid | string | 微信 unionid(可能为空) |
| sessionKey | string | 微信 session_key |
| phone | string | 手机号(如成功获取) |
| token | string | 登录令牌(用于鉴权) |
| isNewPlatform | bool | 是否新创建平台用户 |
| isNewUser | bool | 是否新创建用户 |
成功响应示例
{
"code": 200,
"message": "success",
"data": {
"userId": 10001,
"platformUserId": 20001,
"openid": "oL1oU5gS6Q...",
"unionid": "o6_bmasdasds...",
"sessionKey": "HKq6lZzG2u...",
"phone": "13800000000",
"token": "c6f7f1e4-5a3b-4f4e-9d0b-6b3f7b8c5e3a",
"isNewPlatform": false,
"isNewUser": false
}
}
错误响应示例
{
"code": 400,
"message": "微信接口错误: 40163 code been used",
"data": null
}
业务说明
- 首次登录时会创建
t_user与t_platform_user。 - 之后登录会更新
platform_session_key、last_login_time,并按需更新nickname/avatarUrl/gender/phone。 phoneCode优先于encryptedData+iv用于获取手机号;两者都不提供时不更新手机号。- 返回
token可直接用于鉴权(Authorization: Bearer <token>)。 - 若未传
avatarUrl,系统会从docs/avatar.md列表中随机取一张作为默认头像。 - 新用户默认密码为
123456(仅在获取到手机号时设置),昵称为手机号格式138****0000。 - 若
wechat.mini_program.app_id/app_secret未配置,将返回错误。
配置说明
配置文件中新增:
wechat:
mini_program:
app_id: "wx_your_app_id"
app_secret: "wx_your_app_secret"
相关配置与限制
- 若启用安全校验(
security.enable: true),该接口仍需携带签名头。 - 默认未做登录态发放(如需 JWT/Token,可在接口层扩展)。