Fork me on GitHub

微信小程序登录方案

微信小程序登录方案

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


参考文档 https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html

posted @ 2017-11-15 10:18  小象Frey  阅读(3166)  评论(0编辑  收藏  举报
Fork me on GitHub