微信小程序-

初次接触微信小程序,到现在经历了两个项目,所幸一直用的都是vue,学习陡度较低,在这里记录一下自己在微信小程序里遇到过的问题。
1.app.js的执行顺序低于index.js。所以如果你在app.js写微信授权和登录的获取用户信息的话,index.js获取到的用户信息是null,当然你也可以将微信登陆挡在index。js中,但是这种方法不适用有分享功能的微信小程序,所以,我的办法是:
在app。js中将微信登陆封装成函数模块,然后再index。js中调用,需要注意的是,封装的函数需要做一个判断,判断本地存储有无用户信息,有则return,无则执行方法。

  logins: function (success) {
    let _this = this
    if (wx.getStorageSync("userid")) {
      _this.globalData.userid= wx.getStorageSync("userid");
      _this.globalData.userInfo= wx.getStorageSync("userInfo");
      success();
      console.log('有用户信息,不登陆')
      return;
    }
    console.log('没有用户信息,登陆')
    // 登录
    wx.login({
      success: function (res) {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        getApp().globalData.code = res.code;
        wx.getUserInfo({
          success: res => {
            // 可以将 res 发送给后台解码出 unionId                         
            _this.globalData.userInfo = res.userInfo
            wx.setStorage({
              key: 'userInfo',
              data: res.userInfo,
            })
            console.log(getApp().globalData.userInfo)
            let code = getApp().globalData.code
            console.log(code, 11111111111)
            wx.request({
              url: 'http://',
              data: {
                act: 'wx_login',
                op: 'resOpenId',
                code: code,
                encrypted_data: res.encryptedData,
                iv: res.iv
              },
              method: "POST",
              header: {
                "Content-Type": "application/x-www-form-urlencoded"
              },
              success: function (res) {
                console.log('登陆成功', res.data.res.userid)
                wx.setStorage({
                  key: 'userid',
                  data: res.data.res.userid,
                })
                getApp().globalData.userid = res.data.res.userid;
                success();
              }, fail: function (res) {
                console.log(res, '登陆失败')
                wx.showToast({
                  title: '登陆失败',
                  icon:none
                })
              }
            })
            // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (_this.userInfoReadyCallback) {
              _this.userInfoReadyCallback(res)
              console.log('callback')
            }
          },
          fail: function (err) {
            console.log("未授权");
            wx.showModal({
              title: '系统提示',
              content: '您还未对《小游戏》授权,是否立即前往授权?',
              success: function (res) {
                if (res.confirm) {
                  console.log('用户点击确定')
                  wx.openSetting({
                    success: (res) => {
                      if (res.authSetting['scope.userInfo'] == true) {
                        //已授权
                        _this.logins(success);
                      } else {
                        //用户任然未授权
                      }
                    }
                  })
                } else if (res.cancel) {
                  console.log('用户点击取消')
                  //用户任然未授权
                }
              }
            })
          }
        })
      }
    });
  }

溜了溜了 

2 .

你可能感兴趣的:(微信小程序-)