收藏
回答

getUserInfo获取用户信息并调用登录接口,有个别用户在登陆时瞬间请求后台两次,求解?

<button  open-type="getUserInfo" bindgetuserinfo="getUserInfo" >允许</button>

登录授权按钮通过上述按钮进行授权

---就是这个简单的登录接口

虽然已经通过open-type="getUserInfo" 进行获取授权,但是查看文档发现 wx.getUserInfo 在没有授权的情况下直接走失败回调,所以我就利用这个特性规避拒绝授权后的继续请求服务器的情况。

 本次问题出现的特别尴尬,在之前本人测试的时候一直没遇到过,就是查看后台的时候发现个别用户在同一时间同一秒接连请求两次后台。

所以想请教一下大佬们,我这个登录操作是不是还有什么不妥的地方,为什么会在wx.login  api里面请求两次后台。我在登陆时直接开启了遮罩层,按道理讲不可能连点两次的吧。 新人在线跪求大佬解答。

↓为登录接口代码。

getUserInfo: function(e) {
    console.log(e)
    var that = this
    wx.showLoading({
      title: '登陆中..',
      mask: true
    })
    wx.getUserInfo({
      success(res) {
        app.globalData.userInfo = res.userInfo
        wx.setStorage({
          key: 'userInfo',
          data: res.userInfo,
        })
        var datalist = res
        console.log(datalist)
        wx.login({
          success(res) {
            if (res.code) {
              wx.request({
                url: app.globalData.service + '登录接口',
                method: 'post',
                data: {
                  code: res.code, //login返回的code
                  nickName: datalist.userInfo.nickName,//login返回的用户名
                  avatarUrl: datalist.userInfo.avatarUrl,//login返回的用户头像
                },
                success(res) {
 
                },
              })
            } else {
              that.setData({
                login: false
              })
            }
          },
          fail() {
            that.setData({
              login: false
            })
            wx.hideLoading()
            wx.showToast({
              title: '登陆失败!请重新授权!!',
              icon: 'none',
              duration: 2000,
              mask: true
            })
          }
        })
      },
      fail() {
        wx.hideLoading()
        wx.showToast({
          title: '登陆失败!请授权!!',
          icon: 'none',
          duration: 2000,
          mask: true
        })
      }
    })
  },






基础库2.8.1   开发者工具 v1.02.1907301


回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-13

    怀疑是多点击了

    <button  open-type="getUserInfo" bindgetuserinfo="{{mask?'':'getUserInfo'}}" >允许</button>

    2019-11-13
    有用 1
    回复 3
    • 。。。。
      。。。。
      2019-11-13
      我试试吧,这种问题最尬的是用户不知道怎么触发的,我点半天也点不来。。
      2019-11-13
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-13回复。。。。
      恩,mask为ture时,bindgetuserinfo=""
      2019-11-13
      回复
    • 陈
      2019-11-13回复o0o有脾气的酸奶
      试一下网速很差的情况下点击两次
      2019-11-13
      回复
  • 闪闪发光
    闪闪发光
    2020-07-28

    解决了吗,我也遇到了这个问题

    2020-07-28
    有用
    回复 1
    • 。。。。
      。。。。
      2020-07-31
      用楼下给的方法就可以了,当点击登录以后将点击事件清除,当完成登录逻辑或者服务器接口返回信息以后在绑回去就可以了
      2020-07-31
      回复
登录 后发表内容
问题标签