token

作者: 大仙爷 | 来源:发表于2018-07-16 23:46 被阅读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并且存储到了本地,下次用户再登录的时候就不需要再次获取授权了。

    相关文章

      网友评论

          本文标题:token

          本文链接:https://www.haomeiwen.com/subject/glsqpftx.html