博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信订阅号
阅读量:6125 次
发布时间:2019-06-21

本文共 5563 字,大约阅读时间需要 18 分钟。

微信订阅号

申请订阅号,设置

后台管理功能

  • 素材管理--群发图文消息

  • 自定义回复

  • 自定义菜单

  • 投票管理

自定义开发

  • 基本配置

    注意:自定义功能和微信提供的功能只能启用一个

  • node发送http请求,和解析网页

  • 安装发送请求的包

    • 地址:

    • 安装:npm install request --save

  • 安装解析html的包

    • 地址:
    • 安装:npm install cheerio --save
  • 练习,解析糗事百科

const request = require("request");const cheerio = require("cheerio");//发送http请求request({    method: "get",    url: "http://www.qiushibaike.com",    headers: {        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"    }}, (err, response, body) => {    //解析body    let $ = cheerio.load(body);    $("#content-left .content span").each((index, item) => {        console.log($(item).text());    })})
  • 验证微信服务器
app.get("/wx", (req, res) => {        //接入验证微信服务器        var query =  req.query;        console.log(query.signature);        console.log(query.echostr);        console.log(query.timestamp);        console.log(query.nonce);        res.send(query.echostr);    });
  • 接收消息,当用户给订阅号发消息,微信服务器会以post的形式把消息以xml的格式,发送给设置的服务器

  • 解析xml的包 xml2js

  • 安装 npm install xml2js --save
app.post("/wx", (req, res) => {    //接收post过来的数据,进行处理    req.on("data", (buffer) => {        //console.log(buffer.toString());        //处理xml的包        const parseString = require("xml2js").parseString;        parseString(buffer.toString(), (err, result) => {            console.log(result);        });    });});
  • 发送文本消息
let touser = result.xml.FromUserName[0];let fromuser = result.xml.ToUserName[0];//回复消息if(result.xml.MsgType[0] === "text") {    let txt = "回复你妹";    //回复文本消息    let msg = `    
${Date.now()}
`; res.send(msg);}else if(result.xml.MsgType[0] === "location") { let txt = result.xml.Label[0]; //回复文本消息 let msg = `
${Date.now()}
`; res.send(msg);}
  • 发送图文消息

设置自定义菜单

  • 获取ACCESS_TOKEN,ACCESS_TOKEN有过期时间(2小时),有每日2000次的限制

    http请求方式: GET  https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET  获取返回值  {"access_token":"ACCESS_TOKEN","expires_in":7200}
    //获取access_tokenconst appid = "xxxx";const secret = "xxxxx";request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret, (err, response, body)=> {    let json = JSON.parse(body);    //access_token  -- json.access_token    //console.log(json.access_token);});
  • 设置自定义菜单

    //创建自定义菜单//获取access_tokenrequest("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret, (err, response, body)=> {   let json = JSON.parse(body);   //access_token  -- json.access_token   //console.log(json.access_token);   //创建自定义菜单   let data =  {       "button":[           {               "type":"click",               "name":"今日歌曲",               "key":"V1001_TODAY_MUSIC"           },           {               "name":"菜单",               "sub_button":[                   {                       "type":"view",                       "name":"搜索",                       "url":"http://www.soso.com/"                   },                   {                       "type":"view",                       "name":"视频",                       "url":"http://v.qq.com/"                   },                   {                       "type":"click",                       "name":"赞一下我们",                       "key":"V1001_GOOD"                   }]           }]   };   let url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + json.access_token;   request({       method: "post",       url: url,       headers: {           "Content-Type": "application/json"       },       body: JSON.stringify(data)   }, (err, response, body) => {       console.log(body);   })});

自定义分享到朋友圈的标题

  • 获取签名等信息
//发送http请求,获取access_token   request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret, (err, response, body)=>{       let json = JSON.parse(body);       //access_token  -- json.access_token       //console.log(json.access_token);       //发送请求获取jsticket       request("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ json.access_token +"&type=jsapi", (err, response, body) => {           let json = JSON.parse(body);           //ticket --> json.ticket           const sign = require("./sign");           let result = sign(json.ticket, 'http://wx001.ittun.com/take.html');           console.log(result);       });   });
  • 页面上设置

    • 引入JavaScript
    • 配置签名信息
    wx.config({        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。        appId: 'wxc629aa477087151a', // 必填,公众号的唯一标识        timestamp: '1479299885', // 必填,生成签名的时间戳        nonceStr: 'fb6t2dntsxopdvd', // 必填,生成签名的随机串        signature: '2a45a7c3217cd243c6f4c5ca01c35edc8c832b9b',// 必填,签名,见附录1        jsApiList: ['checkJsApi',            'onMenuShareTimeline',            'onMenuShareAppMessage'            ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2    });
    • 设置分享的自定义信息
    wx.onMenuShareTimeline({           title: '互联网之子', // 分享标题           link: 'http://movie.douban.com/subject/25785114/', // 分享链接           imgUrl: 'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg', // 分享图标           success: function () {               // 用户确认分享后执行的回调函数               alert("wokao");           },           cancel: function () {               // 用户取消分享后执行的回调函数               alert("取消了")           }       })

转载于:https://www.cnblogs.com/bici/p/6126436.html

你可能感兴趣的文章
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>