获取方式参考小程序登录体系。

1、小程序端代码
调用登录接口,回调中用 code 换取 openid。

onLaunch(options) {
  wx.login({
    success: function (res) {
      console.log('login',res);
      wx.request({
        url: 'http://localhost:3000/code2Session',
        headers: {
          'Content-Type': 'application/json'
        },
        method: "POST",
        data: {
          code: res.code
        },
        success: function(res) {
          if(res.data.openid){
            sensors.setOpenid(res.data.openid); 
          }
        },
        complete: function() {
          sensors.init();
        }
      })
    },
    fail: function () {
      sensors.init();
    }
  })
}

2、服务端代码
增加与微信接口的交互,获取 openid 返回给小程序端:

// appid 和 appsecret 存储在服务端
var appId = config.appId,
    appSecret = config.appSecret;

router.post('/code2Session', function(req, res) {
  console.log(req.body);
  var param = {
    'appid': appId,
    'secret': appSecret,
    'js_code': req.body.code,
    'grant_type': 'authorization_code'
  }
  var url = 'https://api.weixin.qq.com/sns/jscode2session?' + querystring.stringify(param);
  // console.log(url);
  axios.get(url)
    .then(function(response) {
      console.log('response', response.data);
      res.json(response.data)
    })
    .catch(function(err) {
      console.log(err)
      res.json(err)
    })
    .then(function() {
    })
})