关于小程序授权登录及token保存

我的问题:由于微信改版,授权登录不再主动弹出弹窗授权,只能通过button去触发,这样对于我们这种想要在网站进入就拿到用户信息的码农们,很是郁闷。
但是呢,也理解,官方为了保证用户隐私,必须用户主动把信息给你看,否则你就不能看,这一点还是很好的。
那么针对这一改版,我们应该做些什么调整呢?
我的实现思路:
一、根据小程序中文档的相关介绍,我将openid的获取和用户信息分开成两块,关于openid的获取是没有太大限制的,整个网站中,用openid串联起来,就足够我们实现网站开发了,用户昵称信息什么的一般来说,也不重要。
1.首先调用login方法拿到code
2.根据code去后台换取openid

//  登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        if (res.code) {
          var code = res.code;
          that.gologin(code);
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
      }
    })

通过gologin方法拿到前后台关联的token值(此处我命名为ukey),将ukey保存在全局里面,供其他的每一个小程序页面获取。
其中有一段代码,我是专门用来判断子页面加载的,因为有可能在子页面请求的时候,app.js全局的ukey值还没拿到,因此做了这样一个操作,在子页面判断,如果没有拿到ukey,必须让主页面的ukey值拿到之后再进行子页面的请求。
主页面代码(app.js):

gologin: function (code) {
    var that = this;
    wx.request({
      url: 你的服务器域名+ '/index/interfaceupdate/savewxuserinfo',
      data: {
        code: code
      },
      method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
      header: {
        'content-type': 'application/json'
      }, // 设置请求的 header
      success: function (res) {
        if (res.data.code == 0) {
          var data = res.data;
          that.globalData.ukey = data.ukey;
          //判断子页面加载
          if (that.employIdCallback) {
            that.employIdCallback(data.ukey);
          }
        } else {
          wx.showToast({ 'title': res.data.msg, 'icon': 'none', 'duration': 2000 });
        }
      },
      fail: function (res) {
        wx.showToast({
          title: '错误',
        })
      }
    })
  },

子页面代码:

onLoad: function(options) {
        var that = this;
        if (app.globalData.ukey && app.globalData.ukey != '') {
            //开始码代码
        } else {
            app.employIdCallback = ukey => {
                if (ukey != '') {
                    //开始码代码
                }
            }
        }
    },

ok,搞定。
2.手动获取用户信息,这一点,很简单。根据官方文档
通过点击button组件去触发 getUserInof 接口,在用户进入微信小程序的时候,判断用户是否授权了,未授权,弹出授权窗口,授权进入主界面。

你可能感兴趣的:(微信开发)