我感觉这个书上的微信小程序登陆写得不好

Posted aguncn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我感觉这个书上的微信小程序登陆写得不好相关的知识,希望对你有一定的参考价值。

基本功能是OK,但是感觉传的数据太多,不安全,需要改写。

 

App(
  d: 
    hostUrl: ‘http://www.test.com/index.php‘, //请填写您自己的小程序主机URL
    appId: "xxx",
    appKey: "xxx",
    ceshiUrl: ‘http://www.test.com/index.php‘,//请填写您自己的测试URL
  ,
  //小程序初始化完成时触发,全局只触发一次
  onLaunch: function () 
    //调用API从本地缓存中获取数据
    var logs = wx.getStorageSync(‘logs‘) || []
    logs.unshift(Date.now())
    wx.setStorageSync(‘logs‘, logs);
    //login
    this.getUserInfo();
  ,
  getUserInfo: function (cb) 
    var that = this
    if (this.globalData.userInfo) 
      typeof cb == "function" && cb(that.globalData.userInfo)
     else 
      wx.getSetting(
        success: function (res) 
          if (res.authSetting[‘scope.userInfo‘]) 
            wx.login(
              success: function (res) 
                //console.log(res);
                var code = res.code;
                //get wx user simple info
                wx.getUserInfo(
                  withCredentials: true,
                  success: function (res) 
                    //如果已经授权过那么会执行这里代码,console.log("已授权标记");
                    that.globalData.userInfo = res.userInfo;
                    typeof cb == "function" && cb(that.globalData.userInfo);
                    //get user sessionKey
                    that.getUserSessionKey(code);
                    if (that.userInfoReadyCallback) 
                      that.userInfoReadyCallback(res)
                    
                  
                );
              
            )
           else 
            // 没有授权,重定向到 loading 启动页
            wx.navigateTo(
              url: ‘../tologin/tologin‘,
            )
          
        
      )
    
  ,

  getUserSessionKey: function (code) 

    //用户的订单状态
    var that = this;
    wx.request(
      url: that.d.ceshiUrl + ‘/Api/Login/getsessionkey‘,
      method: ‘post‘,
      data: 
        code: code
      ,
      header: 
        ‘Content-Type‘: ‘application/x-www-form-urlencoded‘
      ,
      success: function (res) 
        //--init data        
        var data = res.data;
        if (data.status == 0) 
          wx.showToast(
            title: data.err,
            duration: 2000
          );
          return false;
        

        that.globalData.userInfo[‘sessionId‘] = data.session_key;
        that.globalData.userInfo[‘openid‘] = data.openid;
        that.onLoginUser();
      ,
      fail: function (e) 
        wx.showToast(
          title: ‘网络异常!err:getsessionkeys‘,
          duration: 2000
        );
      ,
    );
  ,
  //授权登录
  onLoginUser: function () 
    var that = this;
    var user = that.globalData.userInfo;
    wx.request(
      url: that.d.ceshiUrl + ‘/Api/Login/authlogin‘,
      method: ‘post‘,
      data: 
        SessionId: user.sessionId,
        gender: user.gender,
        NickName: user.nickName,
        HeadUrl: user.avatarUrl,
        openid: user.openid
      ,
      header: 
        ‘Content-Type‘: ‘application/x-www-form-urlencoded‘
      ,
      success: function (res) 
        //--init data        
        var data = res.data.arr;
        var status = res.data.status;
        if (status != 1) 
          wx.showToast(
            title: res.data.err,
            duration: 3000
          );
          return false;
        
        that.globalData.userInfo[‘id‘] = data.ID;
        that.globalData.userInfo[‘NickName‘] = data.NickName;
        that.globalData.userInfo[‘HeadUrl‘] = data.HeadUrl;
        var userId = data.ID;
        if (!userId) 
          wx.showToast(
            title: ‘登录失败!‘,
            duration: 3000
          );
          return false;
        
        that.d.userId = userId;
      ,
      fail: function (e) 
        wx.showToast(
          title: ‘网络异常!err:authlogin‘,
          duration: 2000
        );
      ,
    );
  ,

  globalData: 
    userInfo: null
  ,

  onPullDownRefresh: function () 
    wx.stopPullDownRefresh();
  

);

如果不想首页自动登陆,在其它页调用登陆:

// pages/user/user.js
var app = getApp()
Page(
  data: 
    userInfo: ,
    orderInfo: ,
    loadingText: ‘加载中...‘,
    loadingHidden: false,
  ,
  onLoad: function () 
    var that = this
    //调用应用实例的方法获取全局数据
    app.getUserInfo(function (userInfo) 
      //更新数据
      that.setData(
        userInfo: userInfo,
        loadingHidden: true
      )
    );

    console.log("个人中心:--" + app.d.userId);

    this.loadOrderStatus();
  ,
)

 

以上是关于我感觉这个书上的微信小程序登陆写得不好的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序之微信登陆 —— 微信小程序教程系列(20)

微信小程序怎么先进index判断有没有登陆若没有登录就跳转到login

微信小程序发送通知给他人

Taro/微信小程序 微信登录流程

我的微信小程序(安装)

为啥微信小程序登陆的时候一直是请稍后,网络没问题就是登陆不上去?