小程序getUserInfo接口调整后,如何在原有项目中做授权逻辑修改

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 接口调整后,原有项目中做逻辑修改还有什么问题,可以关注后私信我【同城微圈】关键字,将为您解答。