微信小程序登錄方案

登錄程序 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,
})
}
}
}
})
}
});
}
})