token

2018-07-16  本文已影响0人  大仙爷

意义:在登录微信小程序的时候,有时候会需要获取用户的个人信息,如头像,昵称等,后端会记录下来用户的登录记录,方便用户下次记录不需要再登录,增强了用户体验,便捷使用,而token就是用户的唯一标识,用户第一次登录微信小程序的时候,会弹出一个授权框,提示获取用户授权,授权成功后,会有一个用户的code(微信小程序定义的值),然后前端开发人员将这个code发送给后台,后台会返回一个token值,接下来用户再次登录的时候就不需要授权了,后台会对比用户的token值,匹配,就允许访问数据,否则,就无法访问数据。

获取code值

 wx.login({
      success: res => {
        console.log(res);//res.code:"*************"
        // 发送 res.code 到后台换取token
      }
    })

获取用户信息

open-type='getUserInfo'在标签中加入这个方法
<button bindgetuserinfo='click' open-type='getUserInfo'>获取token</button>

wx.getUserInfo({
            success: res =>{
              console.log(res)
            }
          })

将需要进行请求ajax的方法进行封装并且输出

function myRequest(url, data, success = function () {}, method = 'get') {
  wx.request({
    url,
    data,
    method,
    header: {
      'X-Nideshop-Token': wx.getStorageSync('token')
    },
    success
  });
}
module.exports = {
  formatTime: formatTime,
  myRequest,
  login
}

发送code,拿到token

function login(userInfo, that) {
  if (app.global.code) {
    console.log(userInfo);
    myRequest("https://nideshop.bluej.cn/auth/loginByWeixin", {
        code: app.global.code,
        userInfo
      },
      res => {
        console.log(res)
        wx.setStorageSync('token', res.data.data.token);
        that.setData({
          token: res.data.data.token
        })
        wx.setStorageSync('userInfo', res.data.data.userInfo);
      },
      'post'
    )
  } else {
    // 拿到code
    wx.login({
      success: res => {
        app.global.code = res.code;
        // 拿到token
        myRequest("https://nideshop.bluej.cn/auth/loginByWeixin", {
            code: app.global.code,
            userInfo
          },
          res => {
            console.log(res)
            wx.setStorageSync('token', res.data.data.token);
            that.setData({
              token: res.data.data.token
            })
          },
          'post'
        )
      }
    })
  }
}

这样就拿到了token并且存储到了本地,下次用户再登录的时候就不需要再次获取授权了。

上一篇下一篇

猜你喜欢

热点阅读