wx.getUserInfo 接口调整说明。
一、index.js中的修改部分
var app = getApp();
Page({
onLoad: function(t) {
var e = this;
app.ready(); //调用app.js中的ready方法
});
});
二、app.js中修改部分
注意: app.js 中的 toIndex() 方法是跳转到首页,这里我使用的跳转方式是 wx.switchTab(),因为首页是一个标签页,使用 wx.navigateTo({ url : }) 或 wx.redirectTo({ url: }) 等跳转方式可能会不起作用,所以对标签页的跳转建议使用 wx.switchTab() 方式。
App({
onLaunch: function() {},
onShow: function() {},
……
globalData: {
userInfo: null
},
toIndex: function () {
// 前往首页界面
wx.switchTab({
url: '/pages/index/index'
});
},
toLogin: function () {
wx.navigateTo({
url: '/pages/login/login'
});
},
ready: function () {
let promise = new Promise((resolve, reject) => {
const userkey = wx.getStorageSync('userkey');
const userId = wx.getStorageSync('userId');
const sessionData = wx.getStorageSync('sessionData');
// 检查用户是否具有登录状态
if (!userkey || !userId || !sessionData) {
// 如果未登录就前往登录界面
this.toLogin();
} else {
// 如果有就只要更改一下Promise,以继续执行后续操作
resolve();
}
})
return promise;
},
getUserInfo: function (cb, failcb) {
var that = this;
if (this.globalData.userInfo) {
//已有登录信息
typeof cb == "function" && cb(this.globalData);
console.log('已有登录信息');
} else {
//无登录信息,请求获取用户信息
wx.getUserInfo({
success: function (res) {
wx.login({
success: function (res1) {
var code = res1.code;
console.log(res1);
that.globalData.userInfo = res.userInfo;
console.log('用户信息', that.globalData.userInfo);
that.login(code, res, cb);
}
})
}, fail: function (res) {
typeof failcb == "function" && failcb(res);
}
})
}
},
login: function(code, res, cb){
if(code && res){
typeof cb == "function" && cb(res);
}
}
});
在小程序项目文件的 pages/ 目录下新建一个 login/ 目录,login目录中各部分代码如下:
login.wxss部分:
.loading_tip{
position: fixed;
height: 100%;
width: 100%;
display:flex;
flex-direction:column;
align-items:center;
justify-content: center;
font-size: 1rem
}
login.wxml部分:
<view>
<view>
<view>
<view>
<view>启动中/<view>
<view>
<view>
<view>Copyright © 2018/<view>
login.js部分:
var app = getApp();
Page({
data: {
loading: true
},
onLoad: function () {
var that = this;
app.getUserInfo(function () {
app.toIndex(); //加载成功
}, function () {
that.setData({ loading: false }); //加载失败
});
},
login: function (e) {
app.globalData.userInfo = e.detail.userInfo;
console.log('用户信息', app.globalData.userInfo);
wx.login({
success: function (res) {
var code = res.code;
app.login(code, e.detail, function () {
app.toIndex();
});
}
})
}
});
四、效果截图
跳转回到首页。
五、延伸扩展
这是一套基于we7框架的同城微圈小程序,如果大家想要这套源码(含完整的小程序前端+we7框架+后台管理插件),或者对小程序 getUserInfo 接口调整后,原有项目中做逻辑修改还有什么问题,可以关注后私信我【同城微圈】关键字,将为您解答。