改版之后的wx.getUserInfo 和 wx.authorize在使用scope.userInfo时,无法再提供授权弹框,对此需要在原来代码的基础上进行修改,在onLaunch中对于授权进行判断,授权的话直接使用wx.getUserInfo,未授权会跳到带button的登录页,关键在于登录成功过如果能够返回原先的网页,跳页面之前使用的是navigateTo,但是会产生用户点击后退的问题,但是如果使用redirectTo,则不能返回原先的网页,有没有大神有更好的解决方案啊,万分感谢
代码:
app.js
// 进行授权判断
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo();
} else {
//没有授权,去登录页面 提示用户进行登录
wx.navigateTo({
url: '/pages/login/login',
})
}
console.log("授权判断结束")
}
})
login 页面:
login:function (e) {
if(e.detail.userInfo){
let sessionId = wx.getStorageSync("sessionId");
console.log("where login by user sessionid = "+sessionId);
var data = {
retStatus: 200,
encryptedData: e.detail.encryptedData,
userInfo: e.detail.userInfo,
iv: e.detail.iv
}
//获取用户信息
setTimeout(function () {
wx.navigateBack({
delta:1
})
}, 1500);
}else{
console.log("refuse authorize")
}
},
做成一个弹层的组件,方便使用
wx.redirectTo({
url:'/pages/login/login?redirect_uri=当前页面路径'
});
登录页面授权成功后,获取redirect_uri参数,再次使用wx.redirectTo重定向当前页面
如果我的回答对您有帮助,请点赞
不同的页面都有带着参数,这该如何处理比较好呀
uri里面带上跳转前页面路径和参数,转码后作为字符串变量,登录页截取到这个字符串变量,在转码回来,登录后直接跳转。
做一个弹框,里面放个按钮来获取用户信息
在app里面设置全局变量,存储要返回的页面path(也可以带上后面的参数),在完成业务逻辑之后,判断这个变量是否为空,不为空 直接跳过去,同时将这个变量设置为''。
一步搞定,不要在onLaunch判断,放在onShow里判断。跳转页面用redirectTo,成功后也用这个返回到原来的页面
获取当前的页面url(带参数的页面url)
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length - 1] //获取当前页面的对象
var url = currentPage.route //当前页面url
var options = currentPage.options //如果要获取url中所带的参数可以查看options
//拼接url的参数
var urlWithArgs = url + '?'
for (var key in options) {
var value = options[key]
urlWithArgs += key + '=' + value + '&'
}
urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
获取当前的页面url(不带参数的页面url)
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length - 1] //获取当前页面的对象
var url = currentPage.route //当前页面url
把登录页做成弹出层进行登录
而且当前页面路径没有办法确定额