顺晟科技
2021-06-16 10:50:25
662
由于小程序被修改,当用户次进入小程序时,小程序不会主动弹出授权界面。此时,我们需要判断用户是否已经授权。
也就是app.js的globalData下的userInfo能否获取用户的信息。
我们可以在app.js Modify中看到下面的代码,在这个代码的基础上,下面代码中的else部分是在没有用户授权的情况下执行的。如果用户未经授权,强制用户跳转到/pages/auth/auth页面,该页面是授权页面。
//获取用户信息
wx.getSetting({
成功: res={
if(RES . AuthSetting[' scope . UserInfo ']){
//授权,可以直接调用getUserInfo得到头像昵称,不用弹出框
wx.getUserInfo({
成功: res={
//你可以把res发送到后台对unionId进行解码
this . GlobalData . UserInfo=RES . UserInfo
//由于getUserInfo是网络请求,可能会在Page.onLoad之后返回
//所以在这里添加回调来防止这种情况
if(this . UserInforeadyCallback){
this.userInfoReadyCallback(res)
}
}
})
}else{
//未经授权。无法获取用户信息。用户拒绝授权
wx.reLaunch({
url: '/pages/auth/auth ',
})
}
}
})
},
当用户被迫跳过此授权页面时。参见:下面的页面
这里采用的是ColorUI框架。
按钮如下:
button class=' Cu-btnbg-green shadow lgblock ' open-type=' getuser info ' bindguteuserinfo=' ongetuser info '微信登录/button
用户点击微信登录后,弹出授权页面。此时,用户有两个选择。1.直接单击授权。2.取消授权。
按钮绑定的事件代码如下:
//用户点击微信授权登录按钮回叫功能
onGetUserInfo:function(e){
//第二个。用户单击取消授权
如果(e.detail.userInfo==null){//授权失败,取消授权
Console.log('授权失败,取消授权');
wx.showModal({
标题: '未经授权',
内容: '为了不影响您的使用,请打开相应的权限~ ',
showCancel: false,
成功: res={
if (res.confirm) {
//单击“取消”再次获得授权
wx.openSetting({
成功:数据={
console.log(数据)
If(数据。authsetting ['作用域。userinfo ']==true){//判断是否授权
//再次获取用户数据
wx.getUserInfo({
成功:功能(res) {
console . log(RES . UserInfo);
//授权后在app.js中重新分配userinfo。
getApp()。
//页面跳转
wx.reLaunch({
URL : '/page/activity/activity '
})
}
})
}
},
fail: function () {
Console.info('设置页面失败');
}
});
}
}
});
//个。用户点击授权
}else{
console . log(e . detail . UserInfo);
//授权后在app.js中重新分配userinfo。
getApp()。
//页面跳转
wx.reLaunch({
URL : '/page/activity/activity '
})
}
}
如果用户没有一直授权,他就不能进入小程序并停留在授权页面上。授权后才能正常使用。
11
2022-12
04
2022-06
21
2022-04
17
2022-03
18
2021-11
28
2021-08