小程序基础库
在开始之前,我们先来了解一个概念:微信小程序基础库。
微信小程序的基础库版本主要由微信客户端(微信APP)的版本决定。
前端获取基础库版本号:
const systemInfo = wx.getSystemInfoSync();
console.log("基础库版本号:", systemInfo.SDKVersion);
基础库对开发的影响:
- 基础库版本决定了小程序支持的API范围。
- 基础库版本决定了小程序支持的组件范围。
常用基础库处理方式:
- 设置最低基础库版本:在小程序管理后台(账号设置 - 基本设置 - 基础库最低版本设置)中配置。设置后,如果用户的基础库版本低于设置值,将无法正常打开小程序,并提示用户更新微信客户端
- 兼容性处理:在代码中判断基础库版本,对不同版本的API进行兼容性处理。
2025年9月17日微信官方更新的小程序基础库分布情况:
| 基础库版本 | 安卓版本 | 安卓用户占比 | iOS版本 | iOS用户占比 | 总体占比 |
|---|---|---|---|---|---|
| 3.10.1 | - | 0.02% | - | 0.04% | 0.03% |
| 3.10.0 | 8.0.62 | 83.76% | 8.0.62 | 80.39% | 83.15% |
| 3.9.3 | 8.0.61 | 5.77% | 8.0.61 | 4.61% | 5.28% |
| 3.9.2 | - | 0.01% | - | 0.01% | 0.02% |
| 3.8.12 | 8.0.57 | 4.98% | 8.0.57 | 5.89% | 5.04% |
| 3.8.10 | - | - | - | - | 0.11% |
| 3.8.9 | - | - | - | - | 0.04% |
| 3.8.6 | - | 0.05% | - | - | 0.04% |
| 3.7.12 | 8.0.55 | 1.60% | 8.0.55 | 1.99% | 1.65% |
| 3.6.6 | 8.0.51 | 0.80% | 8.0.51 | 1.61% | 1.01% |
| 3.5.8 | 8.0.50 | 0.41% | 8.0.50 | 1.22% | 0.62% |
| 3.4.10 | 8.0.49 | 0.33% | 8.0.49 | 0.66% | 0.41% |
| 3.3.5 | 8.0.45 | 0.46% | 8.0.45 | 0.83% | 0.59% |
| 3.2.5 | 8.0.43 | 0.10% | 8.0.43 | 0.29% | 0.14% |
| 3.2.4 | - | - | - | - | 0.01% |
| 3.1.5 | 8.0.41 | 0.34% | 8.0.41 | 0.26% | 0.31% |
| 3.0.2 | 8.0.40 | 0.08% | 8.0.40 | 0.10% | 0.08% |
| 2.33.0 | 8.0.37 | 0.09% | 8.0.38 | 0.12% | 0.09% |
| 2.32.3 | 8.0.35 | 0.04% | 8.0.36 | 0.10% | 0.06% |
| 2.31.1 | 8.0.34 | 0.02% | 8.0.34 | 0.05% | 0.03% |
| 2.30.4 | 8.0.32 | 0.07% | 8.0.32 | 0.12% | 0.08% |
| 2.29.2 | 8.0.31 | 0.05% | 8.0.31 | 0.06% | 0.05% |
| 2.28.1 | 8.0.30 | 0.03% | 8.0.30 | 0.03% | 0.03% |
| 2.27.3 | 8.0.28 | 0.64% | 8.0.28 | 1.34% | 0.81% |
| 2.26.2 | 8.0.27 | 0.02% | 8.0.27 | 0.02% | 0.02% |
| 2.25.4 | 8.0.24 | 0.10% | 8.0.24 | 0.06% | 0.09% |
| 2.24.7 | 8.0.23 | 0.07% | 8.0.22 | 0.03% | 0.06% |
| 2.24.4 | 8.0.21 | 0.03% | 8.0.20 | 0.02% | 0.03% |
| 2.23.4 | 8.0.19 | 0.03% | 8.0.18 | 0.03% | 0.03% |
| 2.21.4 | 8.0.16 | 0.02% | 8.0.16 | 0.03% | 0.02% |
| 2.20.3 | 8.0.14 | 0.01% | 8.0.14 | 0.03% | 0.01% |
| 2.19.6 | 8.0.9 | 0.02% | 8.0.10 | 0.01% | 0.01% |
| 2.19.2 | 8.0.7 | 0.01% | 8.0.8 | - | 0.01% |
| 2.18.1 | 8.0.6 | - | 8.0.7 | 0.01% | 0.01% |
| 2.16.1 | 8.0.1 | 0.01% | 8.0.2 | - | 0.01% |
微信小程序获取快速验证手机号
基础库 >=【2.21.2】流程
- 客户去点击 open-type="getPhoneNumber" 的按钮,然后弹出授权弹窗。
- 用户同意授权之后,通过按钮绑定的事件,可以获取微信的回调信息。
- 回调中会有动态令牌code,前端获取到这个code之后,传给后端,后端调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。每个code有效期为5分钟,且只能消费一次;
- 后端将获取到的手机号返回给前端。
注意:用户每点击一次 open-type="getPhoneNumber" 的按钮, 在回调success,获取到code之后,都会扣费0.03元。(每个小程序账号有1000额度,额度用完之后需要在小程序管理后台付费管理模块进行购买)。
基础库 <【2.21.2】流程
- 用户点击带有 open-type="getPhoneNumber"的按钮。
- 绑定 getphonenumber事件,获取 e.detail.encryptedData和 e.detail.iv。
- 前端调用 wx.login获取临时登录凭证 code,将 encryptedData、iv和 code发送到后端。
- 后端接收 encryptedData、iv和 code 使用 code调用微信的 auth.code2Session接口,换取 session_key和 openid。
- 使用 session_key、encryptedData和 iv通过 AES-128-CBC 算法解密,获取用户的手机号
- 将解密后的手机号返回给前端
微信小程序获取用户头像和昵称
微信公告原文:developers.weixin.qq.com/community/d…
调整重要信息概括:
- 2022 年 10 月 25 日 24 时后,小程序 wx.getUserProfile 和 wx.getUserInfo 接口将被收回。通过 wx.getUserProfile 或者wx.getUserInfo接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。
- 「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持,覆盖iOS与安卓微信 8.0.16 以上版本)
基于这个原文,如果小程序是新申请的,只支持「头像昵称填写能力」方式去获取用户头像和昵称。
头像图片地址的详细的获取流程
- 用户点击 open-type="chooseAvatar" 的按钮,弹出获取头像弹窗, 用户选择使用微信头像,或者是自己从相册中上传.
- 前端从按钮的bindchooseavatar事件回调中获取到头像信息的临时路径
- 注意:从基础库2.24.4版本起,若用户上传的图片未通过安全监测,不触发bindchooseavatar 事件
- 上传到服务器:使用 wx.uploadFile API 将图片上传到我们自己的后端服务器中,上传成功后返回图片的存储路径.
- 将存储路径保存到当前用户的信息中.
实践参考交互: