微信开发10-------------------config:fail,invalid signature

MMP!!!!

这是一个非常2B的错误.

错误原因有很多很多.

首先,JS域名设置的只能是有域名,不能带http://

其次

1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。

2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。

3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。

4.确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。

5.确保一定缓存access_token和jsapi_ticket。

6.确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

第三.放个代码

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport"
	content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<title>信息</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript"
	src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript">
	
	var url= location.href.split('#')[0];//获取当前url,不能带路由	
	//去后台服务器加密
	$.post("common/token/jsConfig",{url:url},function(data){
		//返回加密结果
		var nonceStr = data.body.noncestr;
		var timestamp = data.body.timestamp;
		var signature = data.body.signature;
		//赋值给wx的配置
		wx.config({
		    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
		    appId: "wx1000000001", // 必填,公众号的唯一标识
		    timestamp: timestamp, // 必填,生成签名的时间戳
		    nonceStr: nonceStr, // 必填,生成签名的随机串
		    signature: signature,// 必填,签名
		    jsApiList: ["chooseImage","previewImage"] // 必填,需要使用的JS接口列表
		});
		wx.error(function(res){
		});
		wx.checkJsApi({
		    jsApiList: ['chooseImage',"previewImage"], // 需要检测的JS接口列表,所有JS接口列表见附录2,
		    success: function(res) {
		    }
		});
	})
	
</script>

</head>
<body>
	<button onclick="photo()">照相</button>
	<img id="img1" alt="" src="" width="240px" height="320px">
</body>
<script type="text/javascript">
	function photo(){
		wx.chooseImage({
			count: 1, // 默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
			success: function (res) {
				var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
				$("#img1").attr("src",res.localIds[0])
			}
		});
	}
</script>
</html>

猜你喜欢

转载自blog.csdn.net/dmw412724/article/details/81083058