前些天微信小程序修改了获取用户的接口,之前是启动小程序之后如果调用wx.getUserInfo会弹出对话框询问是否允许授权获取用户信息的接口,允许授权之后就可以获取到用户信息。
但是小程序改过登录之后,如果调用这个接口,它只会检查你之前是否已经授权获取用户信息,如果没有,就会走进fail的函数,默认导致获取用户信息失败,而不会弹出对话框询问。如果检测到了之前的授权,可以获取到用户信息。
目前只影响体验版、开发版的小程序,不影响线上版本,但是只是目前。小程序社区说会逐步回收线上版本的wx.getUserInfo的接口授权。
按照微信的说法,是为了收缩获取用户信息的方法,只通过点击button按钮来让用户在有需要使用用户信息的时候引导用户主动授权。
使用button获取用户信息的方法参考https://developers.weixin.qq.com/miniprogram/dev/component/button.html
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button>
给button的
open-type设置为
getUserInfo,点击调用
onGotUserInfo函数,就会弹出询问是否允许授权,如果允许,返回的数据中就会包含用户信息,并且将允许获取用户信息的授权进行缓存记录。在这之后可以直接使用wx.getUserInfo来获取用户信息了,因为它能找到允许获取的授权缓存。