这篇文章写给开始进行微信开发的前端人员学习(初次和前端人员配合的后端也可以看),如果是大神就不用浪费时间看了!
微信公众开发中我们会使用config 接口进行权限验证配置,需要的字段参数如下所示:
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
(不用惊讶,上面的代码是复制的)
其中appId 是自己注册的测试号的appId
timestamp 是自己获取signature随意生成的随机字符串 nonceStr 是自己获取signature 随意生成的随机时间戳 下面讲解获取signature 的步骤
在注册微信平台测试账号后 你会获得 appID 和appsecret
通过微信接口
https://api.weixin.qq.com/cgi-bin/token?appid=你的appid&grant_type=client_credential&secret=你自己的appsecret
这个接口与会返回一个仅你自己填写的安全域名可用的AccessToken
接下来使用获取的AccessToken 获取JsApiTicket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=你前面获取的AccessToken
这里会得到你自己域名可用的JsApiTicket
再按照下面的拼接方式将参数拼接起来进行SHA-1加密
string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + (随机的字符串)nonce_str + "×tamp=" + (时间戳)timestamp + "&url=" + url;
经过上面的接口以及加密算法过后就会得到 一串 字符串 这就是 config 需要的signature签名了
此处说一下这中间的一些坑
1.在获取使用SHA-1算法的时候 使用的url 是 你当前进行config 配置的 页面的url并且要和你在测试号管理平台填写的域名要一致(原因是,你在进行config 配置的时候,微信后台也根据你配置的参数进行SHA-1算法加密,但是在这个过程中会取的是你当前的url),所以这也是为什么做微信公众号开发需要前端自己起一个web服务并且要使用花生壳或者其他工具做动态域名的原因
2.有的同学在配置 接口配置信息 的服务器时会一直失败 如果你配置的这个域名没有在80端口做任务处理的话是肯定会配置失败的
配置这个服务器时你需要在80端口开放一个接口,然后你配置这个服务器资源时 微信后台会向你配置的域名服务器的80端口发送一个请求 这个请求会携带一个你自己填写的Token和echostr两个参数 你只需要这80端口判断是否是你紫的填写的Token 或者你嫌麻烦可以直接把它 发送过来的echostr 字符原样返回都可以 只要在80端口返回echostr 内的字符就可以配置成功
3.因为我是用java 写的 开发后台 所以我的是timestamp nonceStr 是这样生成的其他语言的 可以效仿
timestamp ---- Long.toString(System.currentTimeMillis() / 1000);
nonceStr ----- UUID.randomUUID().toString();
以上我是在学习微信公众平台开始时 遇到的问题 踩到的坑 。
欢迎各位同行 提问 不保证一定能解答。