问题描述
最近才开始上手学习微信小程序开发,跟着视频的步骤去做一些小Demo居然也会翻车!这就让人很纳闷了。视频里面明明就是用了很简单的一个方法就能获取到用户的登录信息了
<button open-type="getUserInfo">获取用户信息</button>
我同样的操作能获取到用户的头像,其他的信息都没有,而且没有弹出
解决过程
确保我没有犯一些低级错误后,我查阅了官方文档
原来是官方在2021.4月进行了一些更改操作导致的。
相关文章:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801
在里面有说到:
4月28日24时后发布的新版本小程序,开发者调用wx.getUserInfo或将不再弹出弹窗,直接返回匿名的用户个人信息,获取加密后的openID、unionID数据的能力不做调整。
即wx.getUserInfo接口的返回参数不变,但开发者获取的userInfo为匿名信息。
新增getUserProfile接口
若开发者需要获取用户的个人信息(头像、昵称、性别与地区),可以通过wx.getUserProfile接口进行获取,该接口从基础库2.10.4版本开始支持,该接口只返回用户个人信息,不包含用户身份标识符。该接口中desc属性(声明获取用户个人信息后的用途)后续会展示在弹窗中,请开发者谨慎填写。开发者每次通过该接口获取用户个人信息均需用户确认,请开发者妥善保管用户快速填写的头像昵称,避免重复弹窗。
所以,就是官方将getUserInfo的那个弹窗给搬到了getUserProfile里面去了,那我们直接用这个就可以了
getUserProfile的API文档 :https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html
解决方案
<button bindtap="getUserProfile">get user info</button>
Page({
data: {
username: "初始化测试数据",
userInfo: {},
hasUserInfo: false
},
getUserProfile(e) {
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
// 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
}
})