做小程序开发的应该都知道,从 2021 年开始微信对用户信息接口的调整让不少人踩了不少坑。老代码照搬过来要么弹窗不触发、要么拿到的信息是加密的,最头疼的是提交审核时被打回。我结合最新的实践,把完整流程梳理了一遍,直接上干货。
一、先搞清楚现在能用哪些方式
微信砍掉了一堆旧接口,目前合规有效的方案就三类,用错了审核必挂:
方案 | 是否需要授权 | 能拿到什么 | 适用场景 |
|---|---|---|---|
wx.getUserProfile | 需要,每次点击都弹窗 | 头像、昵称、性别、地区等公开信息 | 会员注册、个人中心展示 |
open-data标签 | 不需要 | 只能展示,无法通过 JS 获取内容 | 顶部导航头像等纯展示场景 |
wx.login+ 后端 | 不需要 | openID、unionID(需后端换取) | 用户身份识别、登录态维持 |
注意:open-data标签在部分小程序中功能可能受限,建议重要业务优先用wx.getUserProfile。
废弃的坑:
wx.getUserInfo:2021 年 4 月后的版本不再弹出授权窗口,拿到的数据是匿名的
button.open-type="getUserInfo":已无法配合 wx.getSetting 正常判断授权状态
scope.userInfo:调用 wx.getUserProfile 后,wx.getSetting 返回的 scope.userInfo 永远为 true,不能作为授权判断依据
二、主流方案:wx.getUserProfile 完整流程
前置条件
小程序后台完成实名认证和类目审核(不需要额外申请权限)
基础库版本建议设为 2.10.4 及以上(官方接口最低要求)
desc 参数必填,要写清楚用途,不然后台审核会卡住
页面结构(WXML)
<!-- pages/home/home.wxml --