请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

授权登录的两种更新

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

  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',否则要点击两次
  },

正在回答 回答被采纳积分+3

2回答

提问者 weixin_慕斯卡4281563 2019-07-09 22:56:01


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

0 回复 有任何疑惑可以回复我~
  • 我们看onGotUserInfo这个函数,这个函数有一个res,那么这个res是怎么来的呢,这个res其实就是wxml里面bindgetuserinfo获得的并传递到函数里面去的。
    回复 有任何疑惑可以回复我~ 2019-07-09 23:44:21
  • .wxml里面的bindgetuserin竟然是一个函数! 我以为要实现某些逻辑一般是在.js文件里实现?! .wxml文件一般是做页面展示的。
    
    现在竟然在.wxml里的bindgetuserin也是一个函数?!!!这是微信小程序框架做好的 是吗?
    回复 有任何疑惑可以回复我~ 2019-07-09 23:55:02
  • 咚咚呛 回复 提问者 weixin_慕斯卡4281563 #3
    是的。
    回复 有任何疑惑可以回复我~ 2019-07-10 10:31:44
咚咚呛 2019-07-09 22:51:26

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

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

0 回复 有任何疑惑可以回复我~
  • 截图里 授权登录接口更新1/2的 wxml部分是一样的,为何到了逻辑层  只有1 需要显示调用authorize, 是不是 1接口 其实也不用显示调用? 我看 1/2没区别嘛
    回复 有任何疑惑可以回复我~ 2019-07-09 23:04:15
  • 咚咚呛 回复 提问者 weixin_慕斯卡4281563 #2
    看我上面的回复。
    回复 有任何疑惑可以回复我~ 2019-07-09 23:44:36
  • 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 10:30:36
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号