14 Star 80 Fork 23

北京大学-张齐勋 / 移动端开发入门实践

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
NodeJS_http.md 3.12 KB
一键复制 编辑 原始数据 按行查看 历史
张齐勋 提交于 2021-03-28 22:50 . update

服务度获取小程序用户openid代码片段

nodejs服务端程序

var express=require('express');
var app =express();
var mysql = require('mysql');
var bodyParser  = require("body-parser");

const request = require('request');
const querystring = require('querystring');
const appId = "小程序ID";
const appSecret = "小程序秘钥";

let https = require("https");
let fs = require("fs");
// Configuare https
const httpsOption = {
    key : fs.readFileSync("./https/5394471_blogapi.zhangqx.com.key"),
    cert: fs.readFileSync("./https/5394471_blogapi.zhangqx.com.pem")
}

//app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json({limit: '1mb'}));  //body-parser 解析json格式数据
app.use(bodyParser.urlencoded({            //此项必须在 bodyParser.json 下面,为参数编码
  extended: true
}));



//获取openid
app.post('/getopenid', function (req, res) {
    console.log(req.body) //查看请求的body里面的内容
    var data = {
        'appid': appId,
        'secret': appSecret,
        'js_code': req.body.code,
        'grant_type': 'authorization_code'
    };
    console.log(data);
    // querystring的stringify用于拼接查询
    var content = querystring.stringify(data);
    // 根据微信开发者文档给的API
    var url = 'https://api.weixin.qq.com/sns/jscode2session?' + content;
    // 对url发出一个get请求
    request.get({
        'url': url
    }, (error, response, body) => {
        // 将body的内容解析出来
        let result = JSON.parse(body);
        result.code = req.body.code;
        console.log(result)
        // 返回JSON格式数据
        res.json(result)
     })
})

//配置服务端口
var server = app.listen(80, function () {
  var port = server.address().port;
  console.log('App listening at %s', port);
})

https.createServer(httpsOption, app).listen(443);

小程序端程序

wx.request({
          url: 'https://blogapi.zhangqx.com/getopenid', 
          method:'POST',
          data: {
            'code': res.code
          },
          header: {
            'content-type': 'application/json' // 默认值
          },
          success (res) {
            console.log(res.data)
          }
        })

后端的另一种写法(供参考)

//获取openid
app.post('/getopenid2', function (req0, res0) {
   var data = {
        'appid': appId,
        'secret': appSecret,
        'js_code': req0.body.code,
        'grant_type': 'authorization_code'
    };
    var content = querystring.stringify(data);
    // 根据微信开发者文档给的API
    var url = 'https://api.weixin.qq.com/sns/jscode2session?' + content;
    https.get(url, (res) => {
        res.on('data', (d) => {
                console.log('返回的信息: ', JSON.parse(d));
                openid = JSON.parse(d).openid;//得到openid
                sessionKey = JSON.parse(d).session_key;//得到session_key

                let result = JSON.parse(d);
                result.code = req0.body.code;
                // 返回JSON格式数据
                res0.json(result)

        }).on('error', (e) => {
                console.error(e);
        });
    });
});
JavaScript
1
https://gitee.com/ss-pku/webdev.git
git@gitee.com:ss-pku/webdev.git
ss-pku
webdev
移动端开发入门实践
master

搜索帮助