微信小程序--登陆接口

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38209578/article/details/78782008

本文主要介绍微信小程序的登录前端的流程。实现的逻辑是通过获取微信小程序的wx.login的server获取token接口, 传入code, rawData, signature, encryptData实现的。

登录

1.外部封装data.js

    function getUserInfo(code, loginStatus) {
      //封装函数
    wx.getUserInfo({
    success: function (info) {
      var rawData = info['rawData'];
      var signature = info['signature'];
      // var encryptData = info['encryptData'];
      var encryptedData = info['encryptedData']; //注意是encryptedData不是encryptData...坑啊
      var iv = info['iv'];
      console.log(info)
      //小程序调用server获取token接口, 传入code, rawData, signature, encryptData.
      wx.request({
        url: my_url, //my_url此处填写你封装的url
        data: {
          "code": code,
          "rawData": rawData,
          "signature": signature,
          'iv': iv,
          'encryptedData': encryptedData,
        },
        dataType: 'JSON ',
        success: function (res) {
          var str = res.data;
          var session3rd = JSON.parse(str).session3rd
          wx.setStorageSync("userid", session3rd)
          if (res.statusCode != 200) {
            wx.showModal({
              title: '登录失败'
            });
          }
        }
      });
    },
    fail: function (res) {
      loginStatus = false;
      wx.openSetting({
        success: function (data) {
          if (data) {
            if (data.authSetting["scope.userInfo"] == true) {
              loginStatus = true;
              wx.getUserInfo({
                withCredentials: false,
                success: function (data) {
                  console.info("3成功获取用户返回数据");
                  //设置缓存
                  //再次获取用户userid
                  getUserInfo(code, loginStatus);
                },
                fail: function () {
                  console.info("3授权失败返回数据");
                }
              })
            }
              }
            },
          fail: function () {
          console.info("3设置失败返回数据");
                }
              })
            }
        })
    }

    module.exports = {
      getUserInfo: getUserInfo,
    }

2.示例app.js调用外部js实现小程序用户登陆注册

    var util=require('pages/data/data.js');//此处绝对路径相对路径都能实现
    App({
        onLaunch: function () {
        var loginStatus = true;
        var userid=wx.getStorageSync("userid")
        if (userid == "" || userid==undefined){
          if (!loginStatus) {
            wx.openSetting({
              success: function (data) {
                if (data) {
                  if (data.authSetting["scope.userInfo"] == true) {
                    loginStatus = true;
                    util.getUserInfo(code, loginStatus)
                  }
                }
              },
              fail: function () {
                console.info("设置失败返回数据");
              }
            })
          }
          else {
            wx.login({
              success: function (res) {
                // console.log(res)
                var code = res["code"];
                //2.小程序调用wx.getUserInfo得到rawData, signatrue, encryptData.
                util.getUserInfo(code, loginStatus)
             }
           })
         }
        }
        }
        })

Tips:由于这是初步代码逻辑严谨不足,需要各自完善。后端接口的逻辑需要自行解决哦!

展开阅读全文

没有更多推荐了,返回首页