微信小程序登录方案
登录程序 app.js
- 调用wx.login获取code
- 将code作为参数请求自己业务登录接口获取session_key
- 存储session_key
- 如果有回调执行回调
App({
wxLogin: function (callback) {
wx.login({
success: function (res) {
console.log("weixin res", res);
if (res.code) {
//发起网络请求
wx.request({
url: `${app.globalData.apiurl}wx_login`,
data: {
code: res.code
},
success: function (data) {
console.log("请求登录接口返回", data);
wx.setStorage({
key: "session_key",
data: data.data.data.session_key
});
if(callback && typeof(callback) === "function"){
callback(data.data.session_key);
}
},
fail: function (res) {
wx.showToast({
title: '登录失败',
})
}
})
} else {
wx.showToast({
title: '登录失败',
})
}
}
});
}
})
业务数据请求 index.js
- getStorage获取session_key
- 业务请求带上session_key参数
- 登录状态ok 返回业务数据
- 登录失效调用登录函数并执行回调重新getData();
var app = getApp();
page({
getData:function(){
var that = this;
wx.getStorage({
key:"session_key",
success:function(data){
wx.request({
url: `${app.globalData.apiurl}?session_key=${data.data}`,
success:function(res){
if(res.success == "true"){
that.setData({data:res.data});
}else{
//登录失效
if(res.code == 4100){
app.wxLogin(function(){
that.getData();
})
}else{
wx.showToast({
title: res.msg,
})
}
}
}
})
}
});
}
})