node小程序用户登录并获取openID和sessionKey

openID和sessionKey作为小程序用户的唯一凭证,在微信支付和其他接口等都需要使用,还是很重要的,废话少说,上程序。

调用wx.login()获取登录凭证,利用code在后台换取openID和sessionKey

node小程序用户登录并获取openID和sessionKey_第1张图片


      //用户登录
      wx.login({
        success: function (res) {
          if (res.code) {
            //发起网络请求,获取openid和session_key
            wx.request({
              url: `服务器地址/wxLogin`,
              data: {
                code: res.code,
                appID: 小程序appid,
                secret: 小程序secret,
              },
              method: `POST`,
              success: function (res) {
                console.log(res.data);
              }
            })
          } else {
            console.log('获取用户登录码失败!' + res.errMsg)
          }
        }
      })

后台代码:

    fields是我用formidable获取post数据时传过来的参数

//用户登录,controller
exports.wxLogin=(req,res)=>{
    let form = new formidable.IncomingForm();

    form.parse(req, function(err, fields, files,next) {
        if(err){
            return;
        }
        wxModel.wxLogin(req,res,fields);
    });
}
    //model层

exports.wxLogin=(req,res,fields)=>{
    request.get({
        uri: `https://api.weixin.qq.com/sns/jscode2session`,
        json: true,
        qs: {
            grant_type: `authorization_code`,
            appid:fields.appID,
            secret: fields.secret,
            js_code: fields.code
        }
    }, (err, response, data) => {
        if (response.statusCode === 200) {
            res.json({openid:data.openid,session_key:data.session_key});
        } else {
            console.log(`[error]`, err);
            res.json(err)
        }
    });
}

你可能感兴趣的:(小程序)