欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微信登录小程序

程序员文章站 2024-02-11 16:36:28
...

转自:http://www.cnblogs.com/leinov/p/7837610.html

微信小程序登录方案

微信登录小程序

登录程序 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