微信公众号开发小结

微信开发教程

1.注册微信开发者账号

传送门

2.开发者基本功能介绍

2.1 功能(自动回复,自定义菜单在开发者中心开启了回调URL和Token后会失效)

自动回复,自定义菜单,投票管理

2.2 管理

消息管理:用户消息
用户管理:
素材管理:可以上传图文信息,语音,视屏

2.3 推广:字面意思
2.4 统计:用户,图文,菜单,消息,接口,网页分析
2.5 设置

公众号设置:账号设置,功能设置(隐私,水印是否可见,JS接口安全域名)
微信认证: 认证后能多很多功能
安全中心: 安全设置(access_token获取要设置域名白名单)
违规记录: 账号违规记录

2.5 开发

基本设置:设置appId,appsecret,ip白名单,服务器配置等等)

3.服务器配置(启动开发者模式要配置服务器)服务器端口只能为80或443

3.1 设置服务器地址(URL),令牌(Token),消息加解密密钥,消息加解密方式
例子:
服务器地址映射推荐用(Sunny-Ngrok)可以url映射到127.0.0.1:80
配置信息

               服务器地址(URL):http://itcaijw123.ngrok.cc
                   令牌(Token):ITcaijw
消息加解密密钥(EncodingAESKey):n6QhBFfaUrAmi421xyQzMEqh3brUOgCaM9UksvWpPAD
                消息加解密方式:明文模式

服务器语法:(nodejs为例子) token要保持一致

 app.get("/", (req, res, next) => {
    const { timestamp, signature, nonce, echostr } = req.query;
    //这里token保持一致
    var token = 'ITcaijw';
    //变成数组,排序然后再转为字符串,最后sha1加密
    var testArr = [token, timestamp, nonce];
	var testTmp = testArr.sort().join('');
	var scyptoString = sha1(testTmp);
    //判断是否相等,相等的话就返回echostr
  	if(signature == scyptoString){
  	  res.send(echostr);
  	} else {
  	  res.send('error');
  	}
  })

4.access_token获取

4.1 APPID和APPSECRET改成自己的appId和appsecret
4.2 7200后会失效,要写一个自动刷新接口
4.3 获取access_token要设置白名单

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

有了access_token就可以愉快的开发自定义菜单,消息管理,素材管理,用户管理等等

5.JSSDK使用步骤

綁定域名

引入js文件

js SDK初始化

5.1 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限
5.2 api_ticket获取
5.2.1 ACCESS_TOKEN改成获取到的ACCESS_TOKEN
5.2.2 7200后会失效,要写一个自动刷新接口

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card

5.3 签名生成(signature)
签名生成传送门

demo代码

http://demo.open.weixin.qq.com/jssdk/sample.zip
5.4 js调用(appId为开发者自己的appId)

wx.config({
        debug: true, 
        appId: '{{appId}}', //开发者自己的appId
        timestamp:'{{timestamp}}', //时间戳。
        nonceStr:'{{noncestr}}',//随机字符串。
        signature:'{{signature}}',//签名
        jsApiList: [
          'chooseImage',
          'onMenuShareTimeline',
          'onMenuShareAppMessage',
          'onMenuShareQQ',
          'onMenuShareWeibo',
          'onMenuShareQZone',
          'startRecord',
          'stopRecord',
          'onVoiceRecordEnd',
          'closeWindow',
          'openLocation',
          'getLocation',
          'uploadImage',
          'scanQRCode'        ] 
      });

      wx.ready(function(){
      	//检测是否报错
	      wx.error(function(res){
	          console.log(res);
	      });
	    // 分享
	    wx.onMenuShareAppMessage({
	        title: '朋友', // 分享标题
	        desc: '', // 分享描述
	        link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
	        imgUrl: '', // 分享图标
	        type: '', // 分享类型,music、video或link,不填默认为link
	        dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
	        success: function () { 
	            // 用户确认分享后执行的回调函数
	        },
	        cancel: function () { 
	            // 用户取消分享后执行的回调函数
	        }
	    });
      })

详细请见微信公众号技术文档
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

原文地址:https://www.cnblogs.com/caijw/p/7355301.html