前置条件:你已经注册了一个微信公共帐号,并且已经申请成为了微信开发者
接下来开始配置微信网页开发环境
步骤一:绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
进入路径:登录公众平台后台==>公众号设置==>功能设置==>设置JS接口安全域名
比如 lovelovego.com 可以填三个安全域名
备注:登录后可在“开发者中心”查看对应的接口权
步骤二:引入JS文件
在html代码中因为微信JS文件
<script language=javascript src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
步骤三:通过config接口注入权限验证配置
wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });这几个参数要解释一下
debug:debug为true调试模式打开,调用微信接口会弹出返回值调试信息,供开发这查看信息调试,debug为false,测不会弹框显示调试信息
appId:是你注册帐号的开发者中心的appId
timestamp,nonceStr,signature 这三个不是随便写的,这三个是有关联的,微信开发文档里面提供了生成这三个数的例子,有python、php、node、java的例子,下载链接如下
http://demo.open.weixin.qq.com/jssdk/sample.zip
我以python为例,导入python库 sign,py
sign = Sign('jsapi_ticket', 'http://lovelovego.com')
data = sign.sign()
PS:jsapi_ticket生成方法可以参考 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html《附录1-JS-SDK使用权限签名算法》
url :http://lovelovego.com,这个url是不一定是步骤一的安全域名接口,是你提供服务的接口,比如说http://lovelovego.com/wechat也可以
这个data就是包含timestamp,nonceStr,signature的一个字典,然后就可以取出来添加到上面的wx.config里面了
timestamp = data['timestamp']
nonceStr = data['nonceStr']
signature = data['signature']
timestamp,nonceStr,signature 关于这三个的生成微信官方文档提供的sample,能很好的理解它的意思的。
步骤四:通过ready接口处理成功验证
wx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 });
步骤五:通过error接口处理失败验证
wx.error(function(res){ // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 });
至此环境配置好了,我们就可以使用了
例如:
<button onClick="wechat">点我测试</button>
<script>
function wechat()
{
wx.checkJsApi({
jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
});
}
</script>
上面方法是验证chooseImage这个接口有没有获取权限