授权登录的两种更新

来源:4-7 复杂多变的用户状态管理

weixin_慕斯卡4281563

2019-07-09

代码迭代看到了两种实现首选登录写法
图片描述

  authorize: function () {
    console.log('authorize')
    var that = this
    // 登陆并获取cookie
    wx.login({
      success: function (res) {
        console.log(res)
        var code = res.code
        var appId = app.globalData.appId
        var nickname = app.globalData.userInfo.nickName
        // 请求后台
        wx.request({
          url: app.globalData.serverUrl + app.globalData.apiVersion + '/auth/authorize',
          method: 'POST',
          data: {
            code: code,
            appId: appId,
            nickname: nickname
          },
          header: {
            'content-type': 'application/json' // 默认值
          },
          success(res) {
            wx.showToast({
              title: '授权成功',
            })
            // 保存cookie
            var cookie = cookieUtil.getSessionIDFromResponse(res)
            cookieUtil.setCookieToStorage(cookie)
            console.log(cookie)
            that.setData({
              isLogin: true,
              userInfo: app.globalData.userInfo,
              hasUserInfo: true
            })
            app.setAuthStatus(true)
          }
        })
      }
    })
  },

  onAuthorizeConfirm: function (res) {
    var userInfo = res.detail.userInfo
    app.globalData.userInfo = userInfo
    this.authorize()
  },

  onGotUserInfo(e) {
    app.globalData.userInfo = e.detail.userInfo
    ***//这里为什么不需要写 this.authorize()***
  },

  onAuthorizeConfirm: function (res) {
    var userInfo = res.detail.userInfo
    app.globalData.userInfo = userInfo
    this.authorize()//这里不能省略 因为wxml中没有 bindtap='authorize'
  },


今天测试了下发现this.authorize()不能省
  onGotUserInfo(e) {
    app.globalData.userInfo = e.detail.userInfo
    this.authorize() //这里好像也要写 this.authorize() 虽然wxml中有 bindtap = 'authorize',否则要点击两次
  },
写回答

2回答

weixin_慕斯卡4281563

提问者

2019-07-09


而新的方法则是在wxml提供了API ”这句什么意思?老师

0
3
咚咚呛
回复
weixin_慕斯卡4281563
是的。
2019-07-10
共3条回复

咚咚呛

2019-07-09

因为老方法可以允许js逻辑代码通过API请求的方式去得到用户的数据,所以老方法是通过函数的调用去获取用户数据的。

而新的方法则是在wxml提供了API,逻辑层只提供数据的回调函数就好了,因此在新的方法里面,只需要写一个函数接收回调的数据,即可,所以不需要再写this.authorize()了。

0
3
weixin_慕斯卡4281563
onAuthorizeConfirm: function (res) { var userInfo = res.detail.userInfo app.globalData.userInfo = userInfo this.authorize()//这里不能省略 因为wxml中没有 bindtap='authorize' }, onGotUserInfo(e) { app.globalData.userInfo = e.detail.userInfo this.authorize() //这里好像也要写 this.authorize() 虽然wxml中有 bindtap = 'authorize',否则要点击两次 },
2019-07-10
共3条回复

Django+小程序技术打造微信小程序助手

0到1完整项目实战过程,是难得的Django+小程序全栈项目体验。

994 学习 · 507 问题

查看课程