Nodejs微信公众号开发 (2)

这里使用到了request来请求微信接口,sign.js是微信提供的node签名算法,自己可以下载,通过微信接口请求以及node签名算法就可以获取到如下签名数据。

timestamp: , // 生成签名的时间戳 nonceStr: \'\', // 生成签名的随机串 signature: \'\',// 签名 第五步:编写接口返回config数据

上面wx.js已经获得数据, 接下来我们用node编写接口返回数据。注意下面的href,href是前端传回的用来生成签名的,而且这个网页地址的域名一定是在设置里加入白名单了的。

var express = require("express"); var app = express(); var getConfigData = require("./server/wx.js"); var port = "3000"; //获取微信配置数据接口 app.get("/wxconfigdata", function(req, res){ //获取配置 let href = req.query.href;//get获取前端传来的base64网页地址 getConfigData(href).then((data)=>{ res.send(JSON.stringify(data)); }); }); var server = http.createServer(app); server.listen(port); server.on("listening", onListening);

这样就启动了一个3000端口的服务
我们通过访问 ":3000/wxconfigdata" 就可以拿到数据,但这个数据是不正确的,因为locahost跟在设置里的白名单域名不匹配,所以在开发时我们要放到测试服务器里测试。

步骤六:前端请求获取签名数据 /********************************************************************************* * @file: src/wxconfig.js 通过接口获取微信config数据 * @ahthor: leinov * @usedate:2018-11-07 **********************************************************************************/ import { Base64 } from "js-base64"; const axios = require("axios"); /** * 页面调用微信分享方法 * * @param {Object} obj 分享的标题,描述,图片等 * @param {type} callback * @return {type} */ function wxShare(obj,callback){ const href = Base64.encode(location.href); //base64当前页面地址传给后端生成签名 axios.get(`${location.origin}/wxconfigdata?href=${href}`).then((res)=>{ wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: res.data.appid, // 必填,公众号的唯一标识 timestamp: res.data.timestamp, // 必填,生成签名的时间戳 nonceStr: res.data.nonceStr, // 必填,生成签名的随机串 signature: res.data.signature,// 必填,签名,见附录1 jsApiList: ["onMenuShareTimeline","onMenuShareAppMessage"] // 必填,需要使用的JS接口列表,所有JS接口列表见文档 }); shareConfig(obj,callback); }).catch((err)=>{ shareConfig({},callback); }); } function shareConfig(obj,callback){ wx.ready(function(){ //分享到朋友圈 wx.onMenuShareTimeline({ title: obj.timelinetitle ? obj.timelinetitle : obj.title , // 分享标题 link: obj.link, // 分享链接 imgUrl: obj.imgUrl ? obj.imgUrl :"" , // 分享图标 success: function () { if (typeof callback === "function"){ callback(); } }, cancel: function () { // 用户取消分享后执行的回调函数 } }); // 分享给微信好友 wx.onMenuShareAppMessage({ title: obj.title, // 分享标题 desc: obj.desc, // 分享描述 link: obj.link, // 分享链接 imgUrl: obj.imgUrl ? obj.imgUrl:"", success: function () { if (typeof callback === "function"){ callback(); } }, cancel: function () { // 用户取消分享后执行的回调函数 } }); }); } export default wxShare; 步骤七:页面使用

假设我们使用的是react 在react 打包入口js文件里调用配置即可

import wxShare from "../component/wxconfig.js"; wxShare({ title: "驾多多-小程序时代的驾校管理系统", // 分享标题 desc:"驾多多驾校管理系统。帮助驾校在互联网时代,零门槛使用小程序工具,提升招生量、提升服务能力、降低运营成本,是为驾校提供人、财、物及业务办理的综合管理系统。", // 分享描述 link: location.href, // 分享链接 imgUrl:"https://***/jiaddwxicon.png" , // 分享图标 }); 在配置正确的情况下就可以实现配置分享标题描述和图片了,并且微信提供的可用接口都可以实现。

image

tips

在微信开发者工具中调试

appid和secret一定要正确

域名一定是备案的

绑定域名需要的放在服务器上的txt位置一定要正确

参考

微信公众号开发文档

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfwsy.html