根据微信开放社区的描述,官方貌似把默认弹出是否允许小程序的弹窗取消了,取而代之的是需要你手动的用官方给的
<button open-type="getUserInfo" bindgetuserinfo="userInfoHandler">getUserInfo</button>
button组件去手动获取信息。基本步骤大概是:wx.login() =>wx.getSetting()=>用户手动点击上面的button用来获取用户数据并且完成获取用户授权的操作。
1.首先我们开始登录操作,在app.js的onLauch里做登录操作:
//App.js
onLaunch(){
wx.login(res){
console.log(res)
}
}
返回的结果是用户的code和成功的msg:
2.我先尝试直接获取用户数据会怎样?
//App.js
onLaunch(){
wx.login(res){
console.log(res)
}
wx.getUserInfo({
success(res) {
}
})
}
结果是官方给我们的提示,然后就不会再提示你了,即使你清掉所有缓存都不会再提示你了,然后用户就用不了你的小程序了,如果你非要获取用户的信息才能用的小程序的话,那么只能是用户-1了。。。
3.既然不给直接使用wx.getUserInfo,那只能去获取授权了。这里就是用wx.getSetting()了。
//App.js
onLaunch(){
wx.login(res){
console.log(res)
}
wx.getSetting({
success(res){
console.log(res);
wx.getUserInfo({
success(res) {
// that.data.userInfo = JSON.parse(res.rawData);
}
})
}
})
}
这里第一次使用wx.getSetting成功后返回的结果如下
authSetting是个空JSON,而且没有走到wx.getUserInfo()这步。
3.既然这样也不行,那只能按官方给的方法去搞了。所以我在我新建的首页index页面上使用它给的
<button open-type="getUserInfo" bindgetuserinfo="userInfoHandler">getUserInfo</button>了。具体根据自己写的首页去写了。wxml部分:
//index.wxml
<view>
<button open-type="getUserInfo" bindgetuserinfo="userInfoHandler">getUserInfo</button>
</view>
js部分:
//index.js
userInfoHandler(e){
console.log(e.detail)
}
写完编译好后点击按钮出现
点击确定就完成了授权和获取用户信息了。userInfoHandler函数里面e.detail的数据大概就是下面那个图了,userinfo就是用户的头像名字的数据了。
4.重新编译一次小程序,再次查看wx.getSetting()返回的数据
这次的authSetting不是个空JSON了,这就完成了授权了。这次在使用wx.getUserInfo()就可以获取到用户的数据了。