前言
由于官方发出对用户信息获取方法的优化更改,所以不得不进行getUserInfo更新成getUserProfile方法。
考虑到近期开发者对小程序登录、用户信息相关接口调整的相关反馈,为优化开发者调整接口的体验,回收wx.getUserInfo接口可获取用户授权的个人信息能力的截止时间由2021年4月13日调整至2021年4月28日24时。-- 来源小程序登录、用户信息相关接口调整说明
⚠️注意:由于getUserProfile接口从2.10.4版本基础库开始支持(覆盖微信7.0.9以上版本),考虑到开发者在低版本中有获取用户头像昵称的诉求,对于未支持getUserProfile的情况下,开发者可继续使用getUserInfo能力。
实战案例
接下来我用我的小程序我的页面的更新微信头像信息和昵称功能作为案例来讲解。
第一步
首先wxml代码做一个兼容处理:
<!-- canIUseGetUserProfile为兼容版本标识,旧版本依然使用之前的方案 -->
<button class="update_tip" wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 同步微信头像与昵称<image src="../../images/update_icon.png" /></button>
<button class="update_tip" wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo">同步微信头像与昵称<image src="../../images/update_icon.png" /></button>
第二步
其次在js中添加以下代码:
data: {
canIUseGetUserProfile: false,
.....
},
onLoad() {
// 判断当前版本是否对getUserProfile支持
if (wx.getUserProfile) {
this.setData({
canIUseGetUserProfile: true
})
}
},
getUserProfile(e) {
wx.getUserProfile({
desc: '用于完善用户资料',
success: (res) => {
// 实现更新用户信息的逻辑
}
})
},
优化小建议
根据业务来进行优化,比如我这次是更新信息,我可以每次都去获取用户的最新信息,但是有些业务场景不需要每次都获取最新的信息。
getUserProfile 每次调用都会显示弹窗给用户授权,如果不需要每次都获取用户信息的话,可以把信息保存起来,服务器和本地都可以。下次调用 getUserProfile 方法的时候先判断是否本地存在,存在就不用在让用户授权了。
最后
我在修改一些我很早之前写的小程序的时候修改起来比较麻烦,主要是因为我每次获取用户信息授权的时候都是写在当前页面的而没有一个公共授权页面,导致修改多处授权代码逻辑。
在这里建议大家关于授权信息这个操作可以用一个通用页面来做这个事情,以后要是再替换其他的API的时候维护起来会更加简单。详细可见《小程序维护用户表实践》